From: <don...@is...> - 2012-07-07 20:49:26
|
http://clisp.podval.org/impnotes/code-walk.html suggests that this should expand macros, but that's not what I see: (EXT:EXPAND-FORM '(cond (x y))) => (COND (X Y)) ; NIL whereas (macroexpand-1 '(cond (x y))) => (IF X Y NIL) ; T Even stranger: (EXT:EXPAND-FORM '(incf (cond (x y)))) (LET* ((#:COND-60395 X) (#:NEW-60396 (+ (IF #:COND-60395 Y NIL) 1))) (IF #:COND-60395 (SETQ Y #:NEW-60396) (SETQ NIL #:NEW-60396))) ; T (EXT:EXPAND-FORM '(f (cond (x y)))) (F (COND (X Y))) ; NIL |
From: Sam S. <sd...@gn...> - 2012-07-08 03:22:25
|
> * Don Cohen <qba...@vf...3-vap.pbz> [2012-07-07 13:49:27 -0700]: > > http://clisp.podval.org/impnotes/code-walk.html > suggests that this should expand macros, but that's not what I see: EXPAND-FORM produces code which will be actually executed. since COND is implemented as a special form in clisp (the macroexpansion is provided for standard compliance) it is not expanded by EXPAND-FORM. -- Sam Steingold (http://sds.podval.org/) on Ubuntu 12.04 (precise) X 11.0.11103000 http://www.childpsy.net/ http://pmw.org.il http://jihadwatch.org http://iris.org.il http://memri.org http://mideasttruth.com If it has syntax, it isn't user friendly. |
From: Sam S. <sd...@gn...> - 2012-07-08 03:55:28
|
> * Don Cohen <qba...@vf...3-vap.pbz> [2012-07-07 20:33:47 -0700]: > > Sam Steingold writes: > > > EXPAND-FORM produces code which will be actually executed. > > since COND is implemented as a special form in clisp > > (the macroexpansion is provided for standard compliance) > > it is not expanded by EXPAND-FORM. > This doesn't explain (EXT:EXPAND-FORM '(incf (cond (x y)))). why? > Also, HyperSpec/Body/sec_3-1-2-1-2-1.html says that the set of special > operators is fixed - it gives a list that doesn't contain cond. that's why the macroexpansions are still provided. > So if I want to implement a code walker I can't expect to to use > expand-form to expand things into plain functions and the list of > special operators in sec_3-1-2-1-2-1.html. of course! > Is there a list of the "added" special operators in clisp? http://clisp.org/impnotes/misc-data.html -- Sam Steingold (http://sds.podval.org/) on Ubuntu 12.04 (precise) X 11.0.11103000 http://www.childpsy.net/ http://truepeace.org http://openvotingconsortium.org http://camera.org http://pmw.org.il http://jihadwatch.org http://dhimmi.com Isn't "Microsoft Works" an advertisement lie? |
From: <don...@is...> - 2012-07-08 08:51:24
|
Sam Steingold writes: > > * Don Cohen <qba...@vf...3-vap.pbz> [2012-07-07 20:33:47 -0700]: > > > > Sam Steingold writes: > > > > > EXPAND-FORM produces code which will be actually executed. > > > since COND is implemented as a special form in clisp > > > (the macroexpansion is provided for standard compliance) > > > it is not expanded by EXPAND-FORM. > > This doesn't explain (EXT:EXPAND-FORM '(incf (cond (x y)))). > > why? I'd expect that to show an expansion of incf but not cond. Why should this "expand" the cond when (f (cond (x y))) does not? > http://clisp.org/impnotes/misc-data.html Thanks. Also that refers to 3-1-2-1-2-2 I thought I had seen such a thing before, but it really contradicts 3-1-2-1-2-1 which says that there are no other special operators. I wish ...-1 had referred to ...-2. |
From: Sam S. <sd...@gn...> - 2012-07-08 14:14:37
|
> * Don Cohen <qba...@vf...3-vap.pbz> [2012-07-08 01:51:34 -0700]: > > Sam Steingold writes: > > > * Don Cohen <qba...@vf...3-vap.pbz> [2012-07-07 20:33:47 -0700]: > > > > > > Sam Steingold writes: > > > > > > > EXPAND-FORM produces code which will be actually executed. > > > > since COND is implemented as a special form in clisp > > > > (the macroexpansion is provided for standard compliance) > > > > it is not expanded by EXPAND-FORM. > > > This doesn't explain (EXT:EXPAND-FORM '(incf (cond (x y)))). > > > > why? > > I'd expect that to show an expansion of incf but not cond. > Why should this "expand" the cond when (f (cond (x y))) does not? Because INCF is a macro which can do whatever it likes with the form it receives. Specifically, it calls GET-SETF-EXPANSION and does its magic from there. > > http://clisp.org/impnotes/misc-data.html > Thanks. Also that refers to 3-1-2-1-2-2 > I thought I had seen such a thing before, but it really contradicts > 3-1-2-1-2-1 which says that there are no other special operators. No, it says that there is no way to define new special operators. -- Sam Steingold (http://sds.podval.org/) on Ubuntu 12.04 (precise) X 11.0.11103000 http://www.childpsy.net/ http://think-israel.org http://thereligionofpeace.com http://pmw.org.il http://camera.org http://truepeace.org http://dhimmi.com Who is General Failure and why is he reading my hard disk? |