This is the mail archive of the guile@sourceware.cygnus.com mailing list for the Guile project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: A module system should resolve, not introduce, name conflicts


Mikael Djurfeldt <mdj@mdj.nada.kth.se> writes:

> A guy has read R5RS and tries to define a procedure with the
> perfectly reasonable name `unit'.  But MzScheme chokes on this since
> their module system uses the syntactic form `unit'.

And furthermore, it looks like `unit' is indeed something very
special.  This goes beyond the mixing of names.  It should be no
problem to import the name `unit' and then shadow it locally.  But
this does not seem to work in MzScheme.

> Jonathan Rees's module system for Scheme48 (the description of which
> I've also included below) shows how a module system can avoid creating
> name conflicts like these.
> 
> My position is that the idea of mixing forms of the module
> configuration language with the bindings it's supposed to manage is
> flawed.

If I understood Rees' module system right, one can mix the
configuration language and ordinary code, but the configuration
language is contained in just another name space named "module-system"
and it works like any other name space.  Structures (and interfaces)
are contained in name spaces as well, which are usually separate from
`code' name spaces, but they don't need to be.  I find this very
beautiful.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]