Re: Crazy macro



In article <1146368968.799639.60160@xxxxxxxxxxxxxxxxxxxxxxxxxxxx>,
"Drew McDermott" <airfoyle@xxxxxxxxxxxxxx> wrote:

In that case the tags are redundant. All you need is a privileged
symbol (\... would seem like a natural choice) to indicate that it is to
be replaced by the subsequent form, e.g.:

(control-nest
(multiple-value-let (x y) (frob) \...)
(multiple-value-let (q z) (blurp) (foo \...))
etc...
)

True, but the tags can be quite mnemonic.

That's what comments are for IMHO.

I could see tags being useful in a situation like this:

(cond ((condition1) :body1))
((condition2) :body2))
:body1 (body1)
:body2 (body2)

But as you've described it you can't do that.

You see why Vietnamization is a problem in my code!

Personally I deal with this by transforming code like this:

(cond ((condition1)
(let (...) ...))
(t (foo)))

Into this:

(if (not (condition1)) (return (foo))
(let (...) ...)

rg
.