map clojure println

¿Por qué el mapa de clojure se comporta de esa manera con println?



(1)

el resultado de la ejecución (map println ...) es una recopilación del resultado de la ejecución de println que es nulo. Entonces el resultado es una colección de (nil nil nil nil) que imprime el REPL. Mientras está imprimiendo esto, las llamadas println también imprimen allí la salida al REPL para que veas las dos mezcladas.

Si lo define sin imprimirlo:

user=> (def result (map println [1 2 3 4])) #''user/result

Al principio no pasa nada porque el resultado es perezoso. Si lo realizamos sin imprimirlo utilizando dorun

user=> (dorun result) 1 2 3 4 nil

vemos los efectos secundarios de cada impresión y luego el valor de retorno de dorun que es nulo. Luego podemos ver el contenido del resultado evaluándolo.

user=> result (nil nil nil nil)

y veremos que devuelve un montón de nil .

Hola, estoy aprendiendo clojure y quiero entender qué está pasando, cuando escribo

(map println ''(1 2 3 4))

Esperaba algo como

1 2 3 4

pero tengo

(1 2 nil 3 nil 4 nil nil)

Este es solo un ejemplo que inventé. Solo quiero entender lo que está pasando. Tal vez algo que ver con la pereza?