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


* 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 http://www.harlequin.com/books/HyperSpec/Issues/iss279-writeup.html

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.

#\Erik
-- 
if you think this year is "97", _you_ are not "year 2000 compliant".

see http://sourcery.naggum.no/emacs/ for GNU Emacs 20-related material.