On Apr 25, 2009, at 2:51 PM, Michele Simionato wrote:
A byproduct of PLT full phase separation (I dunno about Larceny) is that they get a REPL (not in R6RS mode) which works like a compiled script: in particular if in the REPL I define a helper function and then a macro, the helper function is not available to the macro, unless the helper function was defined with define-for-syntax.
Correct. There might be some subtle differences in other aspects of running the program, like the behavior of call/cc or even read.
Would it be possible for Ikarus to do the same? It seems possible, since the REPL would just need to keep a namespace for runtime entities and a different namespace for expand time entities.
Yes, and this is how the expansion process for scripts and libraries works (by having variables exist in the environment for run-time bindings and macros exist in both run-time and expand-time environments).
Now you may say that doing so would make the REPL less convenient to use and that you are not interested in offering such a "feature", fine with me.
Fine with me too. :-) Aziz,,, [PS. your definition of assert-distinct should use bound-identifier=? instead of free-identifier=?, unless I misunderstood what it's used for. It is for checking duplicates in binding forms, like lambda, let and letrec, right?]
