<分区>
Possible Duplicate:
What does # mean in LISP
我正在学习 lisp,但我不明白为什么必须使用 #'。如果存在具有特定名称的函数,为什么 lisp 会认为它是一个变量? 例如:
>(remove-if-not #'evenp '(1 2 3 4 5 6 7 8 9 10))
(2 4 6 8 10)
<分区>
Possible Duplicate:
What does # mean in LISP
我正在学习 lisp,但我不明白为什么必须使用 #'。如果存在具有特定名称的函数,为什么 lisp 会认为它是一个变量? 例如:
>(remove-if-not #'evenp '(1 2 3 4 5 6 7 8 9 10))
(2 4 6 8 10)
最佳答案
有些 lisp,比如 Common Lisp,需要这个。其他的,比如 Scheme,则没有。
您需要这样做,因为您使用的 Lisp 有一个单独的命名空间用于函数和“普通”变量。如果您遗漏了 #'
,那么符号 evenp
将被解释为引用“正常”(非函数)命名空间。
关于syntax - 为什么在 Lisp 中某些情况下需要放置 #'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9595519/
相关文章:
datetime - 如何使用 &optional arg 和冒号调用 LISP 函数,例如 `(formato ' (( :year 0 4) (:month 4 6) (:day 6 8)))`
xml - 在 xpath 中为什么我可以使用大于符号 > 但不能小于 <
syntax - Elm 中 union 内的大写术语是什么意思?
emacs - 如何保存我在 LispBox/Slime 中输入的所有函数?
python - 使用 Lisp/Scheme 作为脚本语言是否可行?
parsing - (Prolog) 将 Lisp s-表达式解析为 Prolog 术语