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