else - clojure conditionals
¿Cómo implemento foreach loop en clojure? (2)
Simplemente sustitúyalo con doseq
y ya está todo listo. No use el map
, que es tan perezoso como for
.
La implementación de un bucle for en clojure parece ser fácil, pero ¿cómo puedo implementar una instrucción foreach que lea cada elemento de la lista (vector) y haga algo?
Me gusta esto...
(foreach i list expression)
¡Gracias por adelantado!
map
es el equivalente funcional de foreach
, mientras que doseq
es para programación imperativa con efectos secundarios.
map
toma una función f
y una recopilación de recopilación que se puede obtener y devuelve el resultado evaluado perezosamente de aplicar f
a cada elemento de la recopilación.
Ejemplo:
(map inc [1 2 3 4])
=> (2 3 4 5)
(map (fn [x] (* x 2)) [1 2 3 4])
=> (2 4 6 8)
(map dec (take 5 (range)))
=> (-1 0 1 2 3)