[plt-scheme] module hierarchy
Carl,
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."