列表构造函数是用来构造列表的基本函数,在大多数 LISP 体系的计算机编程语言中,使用的函数名称是cons
。
cons
构成了存放两个变量与其指针的内存物件,这个物件被称为 加入 的语法:(cons )
,构造了一个新物件。产生的结果具备了左半部,称为CAR
(第一元素或暂存器位址的内容);以及右半部称为CDR
(其余元素或递减暂存器的内容)。
以上约略地和面向对象的构造器概念相关,即产生一个给定参数的新物件,而其与代数数据类型系统的构造函数,有更密切相关。“”和诸如“”的词句,也是函数编程的通用术语。有时运算子有类似作用,特别是在列表处理的情况下,被读作“CONS”。(例如 ML,Scala,F#和 Elm 编程的 ::
运算符,或 Haskell 编程的 :
运算符,都是向列表的开头添加一个元素。)
虽然单元可用于储存有序的数据对,但它们更常用于组合为更复杂的复合数据结构,特别是列表和二叉树。
例如 LISP 表达式(cons 1 2)
产生一个有序的单元,在左半部存放 1,而右半部存放 2 。
左右次序不能互换((1 2)跟(2 1)不同)。在 LISP 表示法中,(cons 1 2)
结果会印出如下:
(1 . 2)
须注意 1 和 2 之间的句点;这个 S 表达式是特殊的“点对”(所谓的),并不是普通的“列表”。
(cons 42 (cons 69 (cons 613 nil)))