syntax - 为什么在 Lisp 中某些情况下需要放置 #'?

标签 syntax lisp

<分区>

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 中为什么我可以使用大于符号 > 但不能小于 <

java - 二维数组代码和方法不起作用

c - 初始化数组/结构的不熟悉语法,寻找解释

syntax - Elm 中 union 内的大写术语是什么意思?

emacs - 如何保存我在 LispBox/Slime 中输入的所有函数?

python - 使用 Lisp/Scheme 作为脚本语言是否可行?

parsing - (Prolog) 将 Lisp s-表达式解析为 Prolog 术语

python - "except"语句与参数相同的异常类两次

Lisp,计算奇数