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.

Reply via email to