On Mon, May 25, 2009 at 4:31 PM, Alex Shinn <[email protected]> wrote: >> Ok. Anybody here knowing Common Lisp can tell me how Common Lisp >> would work in that example? > > Well, you couldn't do (defvar foo lambda) to begin with > since lambda isn't a variable. But nothing like this is > remotely possible in any language that does any sort of > analysis, since bar is compiled before it is ever called.
No, I meant my own example translated to Lisp: (let () (defvar a 42) (defmacro m () a) (m)) Both emacs-lisp and CLisp at the REPL behaves as Guile, i.e. they have no phase separation. I am not sure if this behavior is implementation-specific or mandated by the CL standard. > Anyway, I had two points. First, that phases aren't a new > idea any more than continuations were new when someone first > got the idea to make them first class. Phases are > inevitability - they are what happens when you have macros. > Methods of managing phases sanely have existed for decades, > and while research on new methods continues, there's nothing > revolutionary about the R6RS approach. You misunderstood, but this is natural because slides should be accompained by spoken works ;-) I wrote that phases are "new" (using quotes) and I would have explained in words that phases per se are not a new concept: what is "new" is that for the first time the Scheme committee has specified the evaluation strategy of Scheme programs in detail. AFAIK, in the past Guile behavior would have been consistent with the standard. > The other point is, _please_, _please_ don't use Guile as an > example Scheme. Well, then maybe I will use Emacs Lisp or CLisp, since I expect most of my audience to be composed by Lispers.
