[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Scheme-reports] Are generated toplevel definitions secret?
On Sun 24 Apr 2011 15:55, Peter Bex <Peter.Bex@x> writes:
> 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.
>> 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.
Thanks for the note. In my example:
((_ var init)
(define val init)
(define-syntax var (identifier-syntax val))))))
(define-constant x 10)
(define-constant y 20))
If I put that in a chicken module, import the module, then access "x"
and "y", does that evaluate to 10 and 20, respectively?
Scheme-reports mailing list