Clojure 当我单独计算常用lisp函数时,为什么它们没有绑定
为什么Clojure 当我单独计算常用lisp函数时,为什么它们没有绑定,clojure,common-lisp,Clojure,Common Lisp,为什么 (floor 4.5) 返回4和0.5,但 floor 给出一个错误: The variable FLOOR is unbound. [Condition of type UNBOUND-VARIABLE] 注:我来自clojure 我如何才能访问实际的楼层程序 #'floor Common Lisp将变量和函数保存在不同的名称空间中。如果使用括号,如第一个示例中所示:(floor…Common Lisp将其识别为一个列表,因为它没有引号,所以会对其求值。计算列表中的第一个表单必
(floor 4.5)
返回4和0.5,但
floor
给出一个错误:
The variable FLOOR is unbound.
[Condition of type UNBOUND-VARIABLE]
注:我来自clojure
我如何才能访问实际的楼层
程序
#'floor
Common Lisp将变量和函数保存在不同的名称空间中。如果使用括号,如第一个示例中所示:
(floor…
Common Lisp将其识别为一个列表,因为它没有引号,所以会对其求值。计算列表中的第一个表单必须是函数名、宏名或特殊表单
在第二个示例中,您没有使用括号,因此它没有被视为列表,因此CL尝试将其解释为变量(变量和函数在不同的名称空间中)
尝试键入(floor)
,您将收到不同的错误消息(参数数无效)
您可以通过键入
#“楼层
或
(功能楼层)
(这些基本相同)。我可能错了,但我认为Common Lisp有两个不同的名称空间,一个用于函数,一个用于普通变量;scheme(我想还有clojuree)有一个名称空间。基本上,在普通的Lisp中,defun将事物放在与let不同的位置。okaram所说的是正确的。因此,公共Lisp称为Lisp-2,而Scheme称为Lisp-1。请注意,
#'楼层
在读取时被转换为(功能楼层)
,因此它们完全相同,并且有一个正常配置的读取表。