[r6rs-discuss] Counter-proposal (Re: Proposed features for small Scheme, part 9: modules)

Per Bothner per at bothner.com
Wed Oct 14 23:12:28 EDT 2009


On 10/14/2009 07:03 PM, Arthur A. Gleckler wrote:
>> Compiling a module creates a "module class file" (and possibly other
>> class files).  Importing a previously-compiled module works by
>> re-creating (using reflection) the set of Declarations exported by
>> the module, and as above adding a set of alias declarations to the
>> importing scope.
>
> Interesting.  So, if I understand correctly, when an import form is
> executed, Declarations are created at runtime?

No - (import ...) (and the older (require ...)) are binding forms,
processed at macro-expansion-time.  If module foo exports a and b, then
   (import (rename (foo) (b b2)))
is translated to (roughly):

   (define-alias a foo:a)
   (define-alias b2 foo:b)
   (foo:run-body)

where (define-alias a foo:a) creates a binding for a (just as if define
were used), but it's indirected to the a exported by foo.

> If you wanted to,
> could the creation of the Declarations, etc. be exposed as Scheme
> primitives in a useful way?  This would allow one to write Scheme code
> that wires together existing modules dynamically, and perhaps to
> implement your module system at the Scheme level.  Does this make any
> sense?

Not that I see.
-- 
	--Per Bothner
per at bothner.com   http://per.bothner.com/



More information about the r6rs-discuss mailing list