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.
