[plt-scheme] module hierarchy

From: Jos Koot (jos.koot at telefonica.net)
Date: Sun Jul 9 17:58:31 EDT 2006

Yes, units are fine too, but I dont think they can handle bindings in syntax 
definitions as elegantly as modules do. I like the concept of separation of 
the expansion time and run time in favor of correct and hygienic 
compilation. Furthermore I find the use of signatures of units a little bit 
cumbersome. In modules I can use selfmade syntaxes that combine define and 
provide and expand to something like (begin (define var ...) (provide var)) 
or (begin (define var ...) (provide (rename var provided-name))) This 
releaves me of the administration of the variables to be provided, 
especially during devellopment, when the module is not yet complete.  I 
still wonder whether or not it is in principle possible to allow nested 
modules. Thanks for your reply, Jos

((((lambda(x)((((((x x)x)x)x)x)x))
   (lambda(x)(lambda(y)(x(x y)))))
  (lambda(x)(write x)x))
 "greetings, Jos")
----- Original Message ----- 
From: "Carl Eastlund" <cce at ccs.neu.edu>
To: "Jos Koot" <jos.koot at telefonica.net>
Cc: "PLT-list" <plt-scheme at list.cs.brown.edu>
Sent: Sunday, July 09, 2006 9:01 PM
Subject: Re: [plt-scheme] module hierarchy

> Jos, you might want to look into the unit system.  Units are like
> modules in many respects, but they are runtime values and much more
> flexible than modules.  Units can contain other units, they can be
> combined dynamically, they can be combined mutually recursively, and
> so forth.
> On 7/9/06, Jos Koot <jos.koot at telefonica.net> wrote:
>> Hi,
>> I like the protection that modules provide against modifying their 
>> variables
>> by code that requires the modules. I also like the shielding of scope, 
>> even
>> in syntax definitions. Beautiful! A module may, in thought, be devided in
>> submodules, the main module simply requiring the submodules and calling 
>> or
>> providing whatever is to be supplied to the user. Likewise submodules may
>> require subsubmodules, and so on. However, as I understand, every module
>> must be located in its own file, which makes all submodules evenly
>> accessible to the user, contrary to my concept of dividing a main module 
>> in
>> hidden submodules. Is there a technical reason why a module must not 
>> contain
>> other modules? If there is no such technical problem, has it been 
>> considered
>> to allow submodules to be declared and required within a module?
>> Jos Koot
>> ((((lambda(x)((((((x x)x)x)x)x)x))
>>    (lambda(x)(lambda(y)(x(x y)))))
>>   (lambda(x)(write x)x))
>>  "greetings, Jos")
> -- 
> Carl Eastlund
> "Cynical, but technically correct." 

Posted on the users mailing list.