Iterate eliminates (progn)s
(iter
(for i below 10)
(progn (progn) (progn (progn)) (progn) (progn) (progn)))
macroexpands to
(let* ((i nil))
(block nil
(block #:iterate1441
(tagbody
(progn (setq i -1))
loop-top-nil
(progn
(setq i (+ i 1))
(if (>= i 10)
(go loop-end-nil)))
(progn)
(go loop-top-nil)
loop-end-nil
(progn))
nil)))
As you can see, all the progns are gone. This turns out to be problematic for cases such as https://github.com/phantomics/april/issues/227
(iter
(for i below 5)
(collect
(april:april (with (:space emerald-geometry) (:state :unformat-output t))
"(4 2⍴⍳8)[3;]")))
as ; is represented as (progn) and the expressions ends up with a different meaning.