[r6rs-discuss] Counter-proposal (Re: Proposed features for small Scheme, part 9: modules)
Marc Feeley
feeley at iro.umontreal.ca
Thu Oct 15 09:53:40 EDT 2009
On 2009-10-15, at 1:11 AM, Arthur A. Gleckler wrote:
>> I am not the (or even an) implementer, but I believe that "module"
>> in Chicken is not a macro, but primitive syntax. All it does is to
>> make any definitions use magic names of the form "modname#truename".
>> When the module is imported, the "modname#truename" names are located
>> and aliases are constructed for them in the current context.
>
> Interesting. It seems like this concept of alias might be something
> that could form part of a useful substrate for modules.
For the record, Gambit also provides something similar with the
"##namespace" declaration. It provides "automatic prefixing" with a
namespace prefix, for a given set of free identifier, or for all free
identifier. For example:
(##namespace ("foo#")) ;; every identifier is prefixed with foo#
(##namespace ("" + define)) ;; except + and define
(##namespace ("bar#" f)) ;; and f which is prefixed with bar#
(define (f x) (+ x a other#b))
is equivalent to
(define (bar#f x) (+ x foo#a other#b))
Note that an identifier containing a #, such as other#b and
##namespace, remains as is (think of it as a "fully qualified
identifier").
Marc
More information about the r6rs-discuss
mailing list