【发布时间】:2014-01-28 15:46:11
【问题描述】:
我正在从“实用通用 Lisp”一书中学习 Lisp。在某一时刻,我应该输入以下代码:
[1] (remove-if-not #'evenp '(1 2 3 4 5 6 7 8 9 10))
(2 4 6 8 10)
我想这里的想法当然是 remove-if-not 想要一个在提供参数时可以返回 T 或 NIL 的函数,然后将此函数应用于列表中的所有符号,返回一个仅包含返回 NIL 的那些符号的列表。
但是,如果我现在在 CLISP 中编写以下代码:
[2] (remove-if-not 'evenp '(1 2 3 4 5 6 7 8 9 10)
(2 4 6 8 10)
它仍然有效!所以我的问题是,我是否使用尖引号,或者仅仅使用引号就足够了?现在看来,附加的尖角只是为了让程序员知道“嘿,这是一个函数,而不仅仅是一些随机符号!” - 但如果它有任何其他用途,我很想知道。
我使用 GNU CLISP 2.49(2010-07-07,哎呀,这实际上已经很老了)。
【问题讨论】:
-
@FrankShearar 不是真的,这是关于函数指示符,而不是 lambda 宏。
-
接受的答案指向clhs.lisp.se/Body/02_dhb.htm,这也是this问题的答案:)
标签: lisp common-lisp clisp