为什么
(floor 4.5)
返回4和0.5,但
floor
给出错误:
The variable FLOOR is unbound.
[Condition of type UNBOUND-VARIABLE]
注意:我来自clojure背景
我如何能够访问实际的floor
程序?
答案 0 :(得分:3)
如果您使用括号,就像在第一个示例中一样:(floor ...)
Common Lisp将其识别为列表,并且因为它没有引用,它会对其进行评估。评估列表中的第一个表单必须是函数名称,宏名称或特殊表单。
在第二个示例中,您没有使用括号,因此不将其视为列表,因此CL会尝试将其解释为变量(变量和函数位于不同的命名空间中)。
尝试输入(floor)
,您将收到不同的错误消息(无效的参数数量)。
您可以通过键入
来访问函数名称空间
#'floor
或
(function floor)
(这些基本相同)。
答案 1 :(得分:2)
#'floor
Common Lisp将变量和函数保存在不同的名称空间中。