Hi, the attached patch fixes a nasty bug in iterate: Without it, forms like (iterate (leave (if T (progn) 3))) evaluate to 3, because walk-progn simply strips empty progn forms.
heh, we were just bitten by this...
i've pushed a failing test, but i'm not sure that this is the proper way to fix this bug. maybe a walk-if should be added...
...but i lost my nerves quickly when dealing with the iterate code walker, because i've already started an iterate clone* which is based on a more serious code walker and is hardly above 500 lines while dealing with environments properly, etc.
thanks for the report though!