[英]Clojure - map with unbound function
我正在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
什么區別?
第一次嘗試運行它時遇到了一些麻煩,盡管刷新頁面后一切正常。
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之類的許多sandbpxed環境不允許您定義任意狀態,因此值得一提的是,可以以多種方式存儲函數,而不僅僅是在vars中存儲。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.