On Mon, 2009-05-04 at 09:06 +0200, Michele Simionato wrote:
> On Sun, May 3, 2009 at 7:25 PM, Michele Simionato
> <[email protected]> wrote:
> > No need to explain, I think I understand the behavior of Larceny and PLT 
> > now.
> 
> But now I do not understand Ikarus anymore!
> I changed the code in x.ss, adding a line (display (list a b)) so that now 
> x.ss
> uses the module defines.ss, so that Ikarus cannot skip visiting it, even
> having pre-compiled the libraries. In my understanding at visit time
> the compiler
> should expand the definitions in defines.sls 

Visiting a library means the syntax definitions are evaluated but the
variable definitions are not.  Expanding a library requires visiting it,
but visiting can also happen after a library has been expanded.  If a
library has been separately compiled, it has already been expanded.  If
a separately-compiled library is freshly loaded, it will be visited but
not expanded, which means the already-expanded-and-compiled code for the
exported top-level syntax definitions is evaluated.

> and see the dummy macro
> definitions;
> then  the register should keep track of the defined names, so that x.ss
> should print the list (a b) and not the empty list, which is instead
> what I get!

I suspect Ikarus is not visiting the dummy macro definitions because
they are not exported.  They have been discarded after expansion and
compilation because Ikarus sees they are not exported and so it figures
they're no longer needed.  But I could be wrong.  I believe what I'm
suspecting is allowed by R6RS.

-- 
: Derick
----------------------------------------------------------------

Reply via email to