Bill Atkins <not-a-real-email@not-a-real-domain.com> wrote:
+---------------
| >(times_two a)
| 8
|
| This is a pretty poor use of a macro, but it's certainly interesting
| that he was able to convince his Lisp implementation (GCL, according to
| the article) to produce that output.
+---------------
Yeah, especially since GCL *should* have blown up, the way (say) CMUCL
does, complaining about trying to multiply the *symbol* A by two:
cmu> (times_two a)
Error: Argument Y is not a NUMBER: A.
Backtrace:
0: (DEBUG:BACKTRACE 8 #<Synonym Stream to *TERMINAL-IO*>)
1: (MY-DEBUGGER-HOOK #<SIMPLE-TYPE-ERROR {5894FD8D}> #<unused-arg>)
2: (INVOKE-DEBUGGER #<SIMPLE-TYPE-ERROR {5894FD8D}>)
3: (ERROR SIMPLE-TYPE-ERROR :DATUM A :EXPECTED-TYPE ...)
4: (KERNEL:TWO-ARG-* 2 A)
5: (* 2 A)
6: (MACROEXPAND-1 (TIMES_TWO A) NIL)
7: (MACROEXPAND (TIMES_TWO A) NIL)
...
-Rob
-----
Rob Warnock <rpw3@rpw3.org>
627 26th Avenue <URL:http://rpw3.org/>
San Mateo, CA 94403 (650)572-2607