为什么当我单独评估它们时,common-lisp函数是未绑定的

时间:2014-07-18 06:03:58

标签: clojure common-lisp

为什么

(floor 4.5)

返回4和0.5,但

floor

给出错误:

The variable FLOOR is unbound.
[Condition of type UNBOUND-VARIABLE]

注意:我来自clojure背景

我如何能够访问实际的floor程序?

2 个答案:

答案 0 :(得分:3)

如果您使用括号,就像在第一个示例中一样:(floor ...) Common Lisp将其识别为列表,并且因为它没有引用,它会对其进行评估。评估列表中的第一个表单必须是函数名称,宏名称或特殊表单。

在第二个示例中,您没有使用括号,因此不将其视为列表,因此CL会尝试将其解释为变量(变量和函数位于不同的命名空间中)。

尝试输入(floor),您将收到不同的错误消息(无效的参数数量)。

您可以通过键入

来访问函数名称空间
  

#'floor

  

(function floor)

(这些基本相同)。

答案 1 :(得分:2)

#'floor

Common Lisp将变量和函数保存在不同的名称空间中。