Lisp中的相等和反向函数

Mel*_*e A -1 lisp common-lisp

我是Common Lisp的新手,经历了一个教程,无法解决这个问题

 (equal '(reverse (a b)) '(b a)))
Run Code Online (Sandbox Code Playgroud)

返回零.

非常感谢你的帮助.

M.

kee*_*erm 9

在lisp中引用会阻止对s-exp的评估并将其作为函数传递.

因此,您将未评估函数'(反向(ab))与列表'(ab)进行比较

如果您将代码更改为

(equal (reverse '(a b)) '(b a))
Run Code Online (Sandbox Code Playgroud)

(反向'(ab))将产生'(ba),因此相等的比较将返回true.

  • 我会说"引用列表"而不是"未评估的功能".`(reverse foo)`和`(ab)`之间的唯一区别是`reverse`是COMMON-LISP包中符号的名称,而`a`是或不是用户定义的函数. (5认同)