我通過labrepl工作我的方式,我看到了一些符合此模式代碼:的Clojure:(適用FN科爾)VS(申請#(適用FN%)科爾)
;; Pattern
(apply #(apply f %&) coll)
;; Concrete example
user=> (apply #(apply + %&) [1 2 3 4])
10
這似乎是相當於這種模式:
;; Pattern
(apply f coll)
;; Concrete example
user=> (apply + [1 2 3 4])
10
這些模式是否等同?如果沒有,有什麼區別,你什麼時候使用一個呢?
我把從step function前者格局labrepl的細胞自動機實驗室:
(defn step
"Advance the automation by one step, updating all cells."
[board]
(doall
(map (fn [window]
(apply #(apply map brians-brain-rules %&)
(doall (map torus-window window))))
(torus-window board))))
更新:我加了每個模式的一個具體的例子,以幫助使問題更加清晰。
同意。我認爲參數可能會有所作爲,但是'(apply#(apply(fn [c](map + c [1 1 1]))%&)[[-1 -1 -1]]''和' (apply(fn [c](map + c [1 1 1]))[[-1 -1 -1]])是等價的。 – noahlz