Clojure - 具有未绑定功能的地图

时间:2015-02-04 06:13:32

标签: clojure

我正在跟随Try Clojure中的Clojure教程,我们将介绍如何定义我们的函数 -

(defn square [x] (* x x))

然后将其应用于数字列表:

(map square [1 2 3 4])

迅速打印出错误:java.lang.IllegalStateException: Attempting to call unbound fn: #'sandbox14750/square

当我尝试映射示例函数inc时,效果很好 - 内置函数incsquare之间的差异是什么?

1 个答案:

答案 0 :(得分:1)

我第一次尝试运行它时遇到了一些麻烦但刷新页面后它运行良好。

Give me some Clojure:
> (defn square [x] (* x x))
#'sandbox6361/square
> (square 4)
16
> (map square [1 2 3 4])
(1 4 9 16)

如果您想确保您的功能在您需要时仍然可用,您可以将功能存储在本地而不是像以下那样的vars:

> (let [square (fn [x] (* x x))] (map square [1 2 3 4]))
(1 4 9 16)
>  
像#clojure上的Clojurebot这样的许多沙坑环境都不允许你定义任意状态,因此值得知道函数可以以多种方式存储,而不仅仅是在变量中。