Common Lisp
维基百科,自由的 encyclopedia
Common Lisp,缩写为CL(不是组合逻辑的缩写)是Lisp编程语言的一种方言,由ANSI INCITS 226-1994(R2004)(前身为ANSI X3.226-1994(R1999)),所定义的语言规范标准。Common Lisp HyperSpec是源自于ANSI Common Lisp标准的网页超链接版本。
编程范型 | 多范型:过程式, 函数式, 面向对象, 元编程, 反射式, 泛型 |
---|---|
设计者 | Scott Fahlman(英语:Scott Fahlman), Richard P. Gabriel(英语:Richard P. Gabriel), David A. Moon(英语:David A. Moon), Kent Pitman(英语:Kent Pitman), Guy Steele, Dan Weinreb(英语:Dan Weinreb) |
实现者 | ANSI X3J13(英语:X3J13)委员会 |
发行时间 | 1984年(40年前)(1984), ANSI Common Lisp:1994年(30年前)(1994) |
当前版本 | |
类型系统 | 动态类型、强类型 |
操作系统 | 跨平台 |
许可证 | GNU通用公共许可证、Artistic License |
文件扩展名 | .lisp, .lsp, .l, .cl, .fasl |
网站 | common-lisp |
启发语言 | |
Lisp, Lisp Machine Lisp(英语:Lisp Machine Lisp), Maclisp, Scheme, InterLisp(英语:InterLisp) | |
影响语言 | |
Clojure, Dylan, Emacs Lisp, EuLisp(英语:EuLisp), ISLISP, R, SKILL(英语:SKILL), SubL(英语:SubL), Julia |
CL语言是为标准化和改良Maclisp而开发的后继者。到20世纪80年代初,几个工作组已经在设计MacLisp各种后继者,例如:Lisp Machine Lisp(又名 ZetaLisp),Spice Lisp,NIL和S-1 Lisp。CL是为了标准化和扩展此前众多的MacLisp分支而开发,它本身并非具体的实现,而是对语言设立标准的规范。有数个实现符合Common Lisp规范,其中包括自由和开源软件,以及商业化产品。CL支持了结构化、函数式和面向对象编程等范型。相对于各种嵌入在特定产品中的语言,如Emacs Lisp和AutoLISP,Common Lisp是一种用途广泛的编程语言。不同于很多早期Lisp,Common Lisp如同Scheme,其中的变量是默认为词法作用域的。
身为一种动态编程语言,它有助于进化和增量的软件开发,并将其迭代编译成高效的执行程序。这种增量开发通常是交互持续地改善,而不需中断执行中的应用程式。它还支持在后期的分析和优化阶段添加可选的类型注记与转型,使编译器产生更有效率的代码。例如在硬件和实现的支持范围内,fixnum
能保存一个未封装整数,允许比大整数或任意精度类型更高效率的运算。同样地,在每个模块或函数的基础上可声明优化,指示编译器要编译成哪一类型的安全级别。
CL包含了支持多分派和方法组合的物件系统,缩写为CLOS,它通常以元物件(Metaobject)协议来实现。
CL借由标准功能进行扩展,例如Lisp宏(编译时期程序自身完成的代码重排(compile-time code rearrangement accomplished by the program itself))和阅读器宏(赋予用户自定义的语法以扩展具特殊意义的符号(extension of syntax to give special meaning to characters reserved for users for this purpose))。
CL为Maclisp和约翰·麦卡锡的原创Lisp提供了一些向后兼容性。这允许较旧的Lisp软件移植到Common Lisp之上。