I think I'll be putting my money on (for) returning a cached lazy seq,
and (macroexpand) also tells me that there's a lazy-cons hidin in
there:
user=> (macroexpand '(for [i (range 1 3)] (do (println i) i)))
(let* [iter__4007 (clojure.core/fn iter__7 [s__8]
(clojure.core/when-first [i s__8] (cloju
I'll take a crack at this. It may appear that the doall and dorun return
something
different with subsequent calls but they don't actually. The doall always
returns
the sequence (1 2) and dorun always returns nil.
The first time (doall x) is called the for loop executes and prints 1 2 (a
side e