On Sat, Apr 25, 2009 at 10:56 AM, Abdulaziz Ghuloum <[email protected]> wrote:
> It's the granularity, or size of the compilation unit that makes the
> difference between the repl and the script modes.
>
> (let ()
>  (define var 12)
>  (define-syntax syn (lambda (hukarez) var))
>  (syn))
>
> Here, the whole let expression is a single compilation unit.  So, regardless
> of whether you enter it into the repl, or have it in a script, a system that
> uses compiler/phased semantics is going to reject it (with an "identifier
> out of context" error), and a system that uses interpreter semantics is
> going to accept it just fine.
>
> The reason why I'm making this distinction is because the conclusion of the
> article says (among other things) that "In such [interpreter] semantics
> everything happens at runtime, and there is no phase separation at all".
>  While the statement is true, none of the systems discussed in the article
> uses interpreter semantics where everything happens at run time and there is
> no phase separation at all.
>
> Makes sense?  No?

Makes a lot of sense and I stand corrected. I will have to reword the
draft and submit a revised version, but this is the reason why I have
asked for help here before "official" publication on Artima ;)

> [PS.  Posting to the list since I thought this is probably useful
> information for everybody.  I usually try to keep my comments private.]

I personally prefer public answers to questions that I have made in public
forum, so no problem with me.

Reply via email to