On Apr 23, 2009, at 11:50 AM, Abdulaziz Ghuloum wrote:
2. Expansion and Evaluation Ikarus libraries are automatically expanded/compiled when you import them (thus, there's a mapping from library names to some storage that contains libraries' code). Chez modules are not associated with any storage: if you import a module and it doesn't already exist in the environment, you get an error. This means that in Chez, it is your duty to ensure that modules are "loaded" before they are used. Now "loaded" is a loaded term as it implies all of "compiled", "visited", and "invoked" (or "revisited" in the Chez lingua). Moreover, the load, compile, visit, and revisit are operations that operate on files, not modules, (such files may contain any code, not just modules) and work by modifying the environment in which such files are loaded, compiled, visited, or revisted. Operations on libraries in Ikarus do not modify the environment since no environment is required for performing these operations. In short, you need to manage the phase dependencies (when files are loaded/compiled/visited/revisited) yourself so that compile-time and run-time information are available when needed.
I forgot to say that Petite Chez does not have a compile file procedure, so, you cannot experiment with compiling files and visiting and revisiting them later. The eval- when feature of Chez is also less powerful in Petite due to the same reason. Aziz,,,
