estoy trabajando mi camino a través labrepl y vi algo de código que sigue este patrón:clojure: (aplicar coll fn) vs (aplicar # (aplicar coll fn% y))
;; Pattern
(apply #(apply f %&) coll)
;; Concrete example
user=> (apply #(apply + %&) [1 2 3 4])
10
Ésta parece ser equivalente a este patrón:
;; Pattern
(apply f coll)
;; Concrete example
user=> (apply + [1 2 3 4])
10
son estos patrones equivalente? Si no, ¿cuál es la diferencia y cuándo usarías una sobre la otra?
Tomé la ex patrón de la step function en el laboratorio celular-autómatas de 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))))
Actualización: he añadido un ejemplo concreto de cada patrón para ayudar a hacer la pregunta más clara.
De acuerdo. Pensé que tal vez el parámetro podría hacer la diferencia, pero '(aplicar # (aplicar (fn [c] (mapa + c [1 1 1]))% &) [[-1 -1 -1]])' y ' (aplicar (fn [c] (mapa + c [1 1 1])) [[-1 -1 -1]]) 'fueron equivalentes. – noahlz