(equal? \'(1 2) (cons 1 2)) ; #f\nRun Code Online (Sandbox Code Playgroud)\n为什么这两个不等价,考虑到列表只是建立在 cons cells 之上的 \xe2\x80\x94 幻觉。
\n列表是一串 cons,每个元素都有一个 cons。所以'(1 2)相当于(cons 1 (cons 2 '())), 可以简化为(list 1 2)。
相当于字面意思(cons 1 2)是'(1 . 2)
(cons 1 2)没有创建正确的列表。它创建一个包含两个元素的 cons 单元,两个元素都是数字。
普通列表递归定义为:
你的通话中2不是一个列表,而是一个号码。第二个参数cons必须是一个列表才能获得正确的列表。
(1 2)
(1 2),car元素是数字,cdr元素是(2)。(2),car元素是一个数字,cdr元素是(),即空列表。()是空列表。这(1 2)是根据上面定义的列表。
(cons 1 2)创建(1 . 2),根据上面的定义,它不是一个列表,因为2它不是一个列表。
| 归档时间: |
|
| 查看次数: |
85 次 |
| 最近记录: |