我試着做以下Clojure中如何映射Clojure中的宏?
(map future exprs)
要獲得未來令牌的序列。不幸的是,這個錯誤是因爲future
本身就是一個宏而不是函數。
有沒有辦法使這項工作,同時仍然保持map
語法?我寧願不使用for
宏(就像個人風格一樣)。
我想我正在尋找mmap
或宏觀地圖。
我試着做以下Clojure中如何映射Clojure中的宏?
(map future exprs)
要獲得未來令牌的序列。不幸的是,這個錯誤是因爲future
本身就是一個宏而不是函數。
有沒有辦法使這項工作,同時仍然保持map
語法?我寧願不使用for
宏(就像個人風格一樣)。
我想我正在尋找mmap
或宏觀地圖。
正如馬爾辛已經指出,使用lambda(匿名函數)
user=> (map and [true false 0 nil])
java.lang.Exception: Can't take value of a macro: #'clojure.core/and (NO_SOURCE_FILE:1)
user=> (map #(and %) [true false 0 nil])
(true false 0 nil)
編輯
順便說一句,如果你使用map
創建一串任務要執行在其他線程中,您可能會遇到問題。 map
是懶惰的,直到有事要求時纔會創建期貨。您需要強制評估(當repl打印結果時發生在repl中)或找到其他方法。
您是否嘗試過使用lambda? – Marcin