Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure 当我单独计算常用lisp函数时,为什么它们没有绑定_Clojure_Common Lisp - Fatal编程技术网

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。请注意,
#'楼层
在读取时被转换为
(功能楼层)
,因此它们完全相同,并且有一个正常配置的读取表。