On Sun, Apr 24, 2011 at 03:39:37PM +0200, Andy Wingo wrote: > How does this relate to modules and separate compilation? I haven't > figured out a good way to implement this yet. > [snip] > > Guile does not currently introduce hygienic bindings for introduced > toplevel identifiers, for this reason. I think it's the same in > Chicken's case, but they can tell you more about that.
Chicken uses an import library for that. This library contains information about a module's exported symbols and macros. It also contains a mapping of bare identifiers to "internal" names. These internal names are stable and comprise the actual "API" of the imported library. In Chicken's case, this mapping looks like '((x . a#x) (y . a#y)) if the module name is a and it exports x and y. When a module is imported somewhere, these mappings are added to the syntactic environment so that it knows what to map them to. I hope this sheds some light on how it works in Chicken. Cheers, Peter -- http://sjamaan.ath.cx -- "The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it can be an aesthetic experience much like composing poetry or music." -- Donald Knuth _______________________________________________ Scheme-reports mailing list [email protected] http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports
