我正在跟随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
时,效果很好 - 内置函数inc
和square
之间的差异是什么?
答案 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这样的许多沙坑环境都不允许你定义任意状态,因此值得知道函数可以以多种方式存储,而不仅仅是在变量中。