NewLISP

newLISP是作为Lisp方言的脚本语言。它由Lutz Mueller设计和开发。newLISP是在GNU通用公共许可证版本3及以后版本下发行的自由及开放源代码软件。

哲学
newLISP尝试提供快速、强力、跨平台、全特征的脚本语言版本的Lisp语言，然而只使用最现代的系统资源比如数据存储（例如磁盘空间）和内存。

它提供的Lisp特征包括：列表、符号处理、函数映射、匿名函数（lambda表达式）、S-表达式（排除不适当列表）和宏。它还提供现代脚本语言预期的功能包括：支持正则表达式、XML、Unicode（UTF-8）、通过传输控制协议（TCP）、互联网协议（IP）和用户数据报协议（UDP）联网、矩阵和数组处理，高级数学、统计和贝叶斯统计分析、数理金融和分布式计算。

newLISP运行的操作系统包括：BSD、Linux、macOS、Solaris和Windows。它支持MYSQL、SQLite和ODBC数据访问，通用网关接口（CGI）、简单邮件传输协议（SMTP）、邮局协议（POP）3、文件传输协议（FTP）和XML远程过程调用（XML-RPC）。它能以服务器模式运行为守护进程。

语言特征
上下文
newLISP支持叫做“上下文”的命名空间，它们可以被赋值给变量并传递给函数，但是它们关联着全局唯一的符号，限制了它们作为头等对象的使用。在newLISP中基于原型面向对象风格的编程是可行的，可使用上下文作为原型来构造对象。在上下文内的变量不会干扰在其他上下文内同名的变量，但是在上下文内部，变量的行为遵守动态作用域规则。

作用域
newLISP使用动态作用域。当一个函数被调用的时候，这个函数可以见到它的调用者的所有变量，上至在相同的上下文或命名空间内的调用者的调用者，以此类推。它支持显式的和隐式的定义局部动态变量，外部环境的同名变量，从而防止意外使用或变更来自调用者环境的变量。被调用函数的形式参数变量自动的遮蔽调用者的调用环境。在全局上，变量可以组织在独立的空间内。

内存管理
newLISP使用了不同于传统垃圾回收方案的一种自动内存管理方法，称为仅有一处引用（one reference only：ORO）。每个变量只被它的上下文引用，而每个上下文都是全局引用的。

在newLISP中不支持在对象间的子对象共享、环状结构、或多个变量指向相同的对象。在存储于数据结构，或传递给除了特定内建函数之外的函数的时候，对象会被复制。例外的是符号和上下文，它们是共享的而不会被复制，因而可以用于间接寻址。符号和上下文是全局性命名和显式删除的；删除一个符号或上下文，会扫描所有对象来将到它的引用替代为nil。

GUI选项
newLISP图形用户界面（GUI）服务器（newLISP-GS），是提供图形编程接口的一个基于Java的互联网协议族（TCP/IP）服务器。在newLISP二进制发行中，能获得到基于newLISP-GS的开发环境，并能获得、OpenGL和基于Tcl/Tk的编程接口。

独立二进制执行
任何newLISP版本都允许建造可执行文件，和自包含而不需要安装就可部署的可移植应用。

交互于共享库
newLISP拥有导入函数，允许用它从Windows API Win32上的动态链接库（DLL），或者Linux或Unix上的共享库中导入函数。

框架
newLISP能获得的Web应用框架包括Dragonfly和Rockets。

引用

外部链接

Category:动态类型编程语言
Category:函数式编程语言
Category:LISP程式语言家族
Category:脚本语言