Come correttamente sottolineato da sepp2k constantly
è una funzione, quindi il suo argomento verrà valutato solo una volta.
Il modo idiomatico per ottenere quello che state facendo qui sarebbe quella di utilizzare doseq
:
(doseq [i (range 0 3)]
(println "Loop it."))
Oppure, in alternativa dotimes
(che è un po 'più conciso ed efficace in questo caso particolare, come non sono in realtà utilizza la sequenza prodotta da range
):
(dotimes [i 3]
(println "Loop it."))
Entrambe queste soluzioni non sono pigri, che è probabilmente quello che vuoi se si sta solo eseguendo del codice per gli effetti collaterali.
Guardato alla fonte. Questo sembra un vincitore. – Mike
Stavo cercando di usare costantemente per evitare di passare esplicitamente un argomento di cui non ho bisogno. Si accontenterà di questo, però. – Mike
Nota che se vuoi solo effetti collaterali, dovresti usare 'doseq' o' dotimes'. Dato che 'map' è pigro, non otterrai il risultato desiderato a meno che non lo imponi con' doall' o 'dorun'. –