elisp 中 cons 和 list 函数调用的区别

6 elisp emacs24

在埃利普中,

(cons 1 2) `returns`
(1 . 2)
(list 1 2) `returns`
(1 2)
Run Code Online (Sandbox Code Playgroud)

两个输出有什么区别?

Bar*_*mar 4

(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))