On Wed, 7 Oct 2009, Marco Maggi wrote: > Last note before giving up; the following works for Ikarus, > Larceny, Mosh and Ypsilon: > > (library (subsublib) > (export blue) > (import (rnrs)) > (define (blue) 123)) > > (library (sublib) > (export h) > (import (rnrs) (for (subsublib) (meta -1))) > (define h > (make-eq-hashtable)) > (hashtable-set! h 'b (syntax blue))) > > (library (lib) > (export thing) > (import (rnrs) (for (sublib) expand)) > (define-syntax thing > (lambda (stx) > (syntax-case stx () > ((_) > (with-syntax ((f (hashtable-ref h 'b #f))) > #'(f))))))) > > (import (rnrs) (lib)) > (write (thing)) > > so the fact that the identifier has to be imported in the > library defining the macro transformer is not the whole > story...
Very interesting. Maybe r7rs can be persuaded to address this kind of thing. It should certainly be raised for discussion when the time comes. Until then, I don't think this kind of thing can be expected to work portably across implementations, or even consistently within a given implementation, since use cases similar to this can subvert the normal static determination of import dependencies. I would consider the permissiveness of all the above implementations to be a bug, but it would be interesting to hear different points of view. Andre _______________________________________________ Larceny-users mailing list [email protected] https://lists.ccs.neu.edu/bin/listinfo/larceny-users
