Common Lisp:谓词 returns 给函数作为参数时出错
Common Lisp: predicate returns an error when given a function as a parameter
刚开始玩 Common Lisp(使用 L(λ)THW),输入 (atom atom)
期望得到 nil
结果。但是我得到了错误
错误[!]:变量“ATOM”未绑定。
据我所知,当我尝试 "feed" 任何谓词的任何函数时,结果相同。为什么会这样?具体来说,函数(或表达式)不只是列表吗?
这是因为 Common Lisp 是 Lisp-2。这意味着变量和函数驻留在不同的命名空间中。要将函数用作值,您必须使用函数 function
:
从函数命名空间中获取它
(atom (function atom))
作为快捷方式,您可以在其前面加上 #'
:
(atom #'atom)
刚开始玩 Common Lisp(使用 L(λ)THW),输入 (atom atom)
期望得到 nil
结果。但是我得到了错误
错误[!]:变量“ATOM”未绑定。
据我所知,当我尝试 "feed" 任何谓词的任何函数时,结果相同。为什么会这样?具体来说,函数(或表达式)不只是列表吗?
这是因为 Common Lisp 是 Lisp-2。这意味着变量和函数驻留在不同的命名空间中。要将函数用作值,您必须使用函数 function
:
(atom (function atom))
作为快捷方式,您可以在其前面加上 #'
:
(atom #'atom)