信息详情
Common Lisp,缩写为 CL是Lisp的众多方言之一,标准由ANSI X3.226-1994定义。它是为了标准化此前众多的Lisp分支而开发的,它本身并不是一个具体的实现而是各个Lisp实现所遵循的规范。相对于各种嵌入在特定产品中的语言Emacs Lisp 和 AutoLISP,Common Lisp 是一个通用用途的编程语言。不像很多早期的Lisp,Common Lisp同Scheme一样,其中的变量是有作用域的。Common Lisp 是一个多重范式编程语言,这表现在:支持各种编程技术:过程编程,函数编程 和 面向对象的编程。动态数据类型,但是可以使用可选的类型声明来提高效率和增强安全性。可以通过一些标准特性来扩展,例如 Lisp宏。
Common Lisp 拥有相当丰富的数据类型,比很多语言都要多。数字 类型包括整数,分数,浮点数,和复数。Common Lisp 使用 bignum 来表示任意长度和精度的数值。分数类型精确地表示分数,这是很多语言都不具备的能力。 Common Lisp 自动将数值转换成适当的类型。Common Lisp 字符 类型并不仅仅是 ASCII 字符,这是因为 Lisp 在 ASCII 出现前就存在了。 一些现代的实现允许使用Unicode字符。符号类型是Lisp语言共有的,而在其它语言中就较少见。一个符号是一个唯一的命名数据对象。与其它语言中的标识符类似,Lisp中的符号可以用作变量名,但它们也是可以独立使用的一种数据对象。一般来说,对一个符号求值时会得到以该符号为名的变量的值,但也有例外:形如:foo的关键词符号的值就是它本身,而符号T和NIL则一般被分别用于表示布尔真与布尔假。
Common Lisp中的序列类型包括列表、向量、位向量以及字符串。有很多可以对任意的序列类型起作用的操作符。就像在几乎所有其它的Lisp方言中一样,Common Lisp中的列表由点对组成,有时候把点对叫做点对单元或序偶。一个点对是一种带有两个存储槽的数据结构,两个槽分别叫做它的car和cdr。一个列表就是一条点对的链表。每一个点对的car引用一个列表的成员(可能是另一个列表)。而除了最后一个的cdr引用到值nil之外,其余的每一个点对的cdr都引用下一个cons。点对也可以很容易地用于实现树或者其它复杂的数据结构;尽管一般建议使用结构体或者类的实例来代替它们。利用点对还可以创建环形数据结构。
Common Lisp支持多维数组,并且如果有必要可以动态地调整数组的大小。多维数组可以用于数学中的矩阵运算。向量是一维数组。数组可以携带任何类型的成员(甚至在同一个数组中混合不同类型)或指定为包含指定类型的成员,例如整数构成的向量。许多Lisp实现可以在使用指定类型的数组时对数组函数进行优化。有两种指定类型的数组是标准所包含的:字符串和位向量。字符串是由字符构成的向量,而位向量是由比特构成的向量。
友情提示
如涉及内容、版权等问题,请在30日内联系,我们将在第一时间删除内容!点此纠错或删除此信息