This is the mail archive of the
guile@sourceware.cygnus.com
mailing list for the Guile project.
Re: A module system should resolve, not introduce, name conflicts
- To: Mikael Djurfeldt <mdj at mdj dot nada dot kth dot se>
- Subject: Re: A module system should resolve, not introduce, name conflicts
- From: Marius Vollmer <mvo at zagadka dot ping dot de>
- Date: 24 Feb 2000 22:28:54 +0100
- Cc: guile at sourceware dot cygnus dot com, djurfeldt at nada dot kth dot se
- References: <xy7snyie7cv.fsf@mdj.nada.kth.se>
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.