Clojure: Implementando la función comp.
4ClojureProblema 58 se declara como:
Escribe una función que te permita crear composiciones de funciones. La lista de parámetros debe tomar un número variable de funciones, y crear una función las aplica de derecha a izquierda.
(= [3 2 1] ((__ rest reverse) [1 2 3 4]))
(= 5 ((__ (partial + 3) second) [1 2 3 4]))
(= true ((__ zero? #(mod % 8) +) 3 5 7 9))
(= "HELLO" ((__ #(.toUpperCase %) #(apply str %) take) 5 "hello world"))
aquí__
Debe ser reemplazado por la solución.
En este problema la función.comp
No debe ser empleado.
Una solución que encontré es:
(fn [& xs]
(fn [& ys]
(reduce #(%2 %1)
(apply (last xs) ys) (rest (reverse xs)))))
Funciona. Pero realmente no entiendo cómoreduce
trabaja aqui Como lo representa(apply f_1 (apply f_2 ...(apply f_n-1 (apply f_n args))...)
?