Code Generated by Macros

To: common-lisp@SU-AI

Subject: Code Generated by Macros

From: Glenn S. Burke <GSB@MIT-MC>

Date: Wed, 24 Apr 85 19:18:08 EST

Date: Wed, 24 Apr 85 12:58:16 EST
From: greek@DEC-HUDSON
We found that the following "macros" generated loops that hid a
surrounding NIL block:
CCASE
CTYPECASE
DO-SYMBOLS et al
lots of compiler transformations (e.g., that turned a map
into a loop)
Also, of course, plenty of macros written by users can inadvertently
cause the problem.
The simplest way around is to only generate TAGBODYs. Even PROG
establishes a NIL block.
Oh come on. This is what BLOCK and GENSYM are good for. This is why
named PROGs have been useful in the past (in NIL and Zetalisp).
GENSYM is also good for generating tags within your tagbody -- you
still need to worry about uniqueness there.