Estoy intentando retrasar varios cálculos. Tengo funciones de la siguiente forma,Argumentos de función múltiples tipos
(defn a-fn [a b]
(let [a (if (fn? a)
a
#(identity a))
b (if (fn? b)
b
#(identity b))]
(+ (a) (b))))
esto me permite pasar a-fn, un valor o una función que devuelve el valor,
(a-fn 1 2)
(defn x [] 1)
(defn y [] 2)
(a-fn x y)
(a-fn x 2)
lo que hago es crear una lista de funciones (como el anterior) para operar con algunos datos, los fns pueden usar otros fns para recuperar sus argumentos o, en algunos casos, las cosas no cambian y se les asignan valores como argumentos. Me preguntaba si existe una mejor manera de lograr este tipo de comportamiento.
Agradable. Se olvidó de la demora/fuerza. –