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?]

Reply via email to