在埃利普中,
(cons 1 2) `returns`
(1 . 2)
(list 1 2) `returns`
(1 2)
Run Code Online (Sandbox Code Playgroud)
两个输出有什么区别?
(cons 1 2)创建一个像这样的单一 cons 单元格:
---------
| 1 | 2 |
---------
Run Code Online (Sandbox Code Playgroud)
Lisp 中的列表是一串 cons 单元。每个单元格car都是一个列表元素,它cdr指向链中的下一个单元格;最后一个cdr指向特殊符号nil。因此(list 1 2)创建了一个像这样的 cons 单元链:
--------| --------|
| 1 | ----->| 2 | ----> nil
--------| --------|
Run Code Online (Sandbox Code Playgroud)
它相当于(cons 1 (cons 2 nil))