小编Max*_*Max的帖子

使用汽车和cdr的Common Lisp引用行为

Lisp的初学者.我正在研究"Common Lisp:一个温和的介绍",我遇到了这种我不理解的行为.这是在clisp中:

[57]> (cdar '((fee fi) '(fo fum)))
(FI)
[58]> (cdar '('(fee fi) '(fo fum)))
((FEE FI))
Run Code Online (Sandbox Code Playgroud)

第一个表达式(第57行)对我来说很有意义.它获得了((费用fi)(fo fum))的CAR的CDR,即(费用fi)的CDR.但是58号线上发生了什么?我原以为它会给我完全相同的东西,(FI).但它给了我一份清单清单?谁能帮我理解发生了什么?

更令人惊讶的是,如果我用两个表达式中的每个表达式执行这些操作,当(费用fi)不加引号时,我会收到错误:

[72]> (car '((fee fi) '(fo fum)))
(FEE FI)
[73]> (cdr (FEE FI))

*** - EVAL: undefined function FEE
Run Code Online (Sandbox Code Playgroud)

但是当我引用(费用fi)时,我得到了正确的结果,这反映了我的第一个结果:

[77]> (car '('(fee fi) '(fo fum)))
'(FEE FI)
[78]> (cdr '(FEE FI))
(FI)
Run Code Online (Sandbox Code Playgroud)

任何照明将不胜感激!

lisp common-lisp cdr

2
推荐指数
1
解决办法
336
查看次数

标签 统计

cdr ×1

common-lisp ×1

lisp ×1