Subject: Re: Help with macros
From: Erik Naggum <>
Date: 1997/11/19
Newsgroups: comp.lang.lisp
Message-ID: <>

* Aaron Gross
| Also, for future reference, the Common Lisp functions MACROEXPAND and
| MACROEXPAND-1 are invaluable for figuring out what's going on with
| macros.

(quoted only to maintain context.)

| OK, now it's my turn to ask a question about PUSH. I was going to give
| an example showing that DUFF-PUSH evaluated its arguments in the wrong
| order, e.g.,
| (push (progn (print "first") 'a) 
|       (cdr (list (print "second") 'b)))
| Is this a bug in ACL, or am I missing something really obvious?

well, try and macroexpand the form.  :)

when I first got ACL 4.3, I spent a *lot* of time with Appendix A, "Allegro
CL and the Common Lisp Standard".  it was _most_ educational.  see item 48
on page A-5 for their story on PUSH-EVALUATION-ORDER:ITEM-FIRST, the full
text at

sadly, some of the items are out of date: ACL _does_ conform to a lot of
stuff where Appendix A says it doesn't.  I can live with this.

if you think this year is "97", _you_ are not "year 2000 compliant".

see for GNU Emacs 20-related material.