[R6RS] Modules

Michael Sperber sperber
Tue Nov 9 13:02:02 EST 2004


>>>>> "Marc" == Marc Feeley <feeley at IRO.UMontreal.CA> writes:

Marc> I agree with Manuel here.  When filenames are placed in the module,
Marc> the module becomes dependent on the filesystem and where the modules
Marc> are placed and also the filename syntax of the operating system.  This
Marc> goes against the principle of modularity.  I would like people to
Marc> share modules without having to change the filenames in the module to
Marc> suit local filesystem structuring conventions or the structure of the
Marc> system in which they want to use this module.

I don't understand the fundamental difference between a "symbolic
name" and a filename on a concrete platform.  Each one is just a
string, and the Scheme implementation must find some way to map that
string (+ context) to a concrete filename, database entry, whatever.
Whether that string used to be a concrete filename when the author
thought it up is irrelevant.  This holds for both the "include" file
names as well as the module names themselves.  Whether they're string
literals or identifiers is also pretty much irrelevant to the
fundamental issue.

Now, having said that, I'd like to suggest that we supply a "default"
standard mapping of the symbolic names to concrete filenames /
directories on the two popular platforms---Windows and Unix.  This
means choosing a syntax for those filenames that uniquely maps to
filenames on those two systems.  This isn't hard, and it addresses 99%
of the users' needs, and it doesn't preclude:

- offering custom mapping whether separate configuration files or
  whatever
- storage in a database or something
- generally laying out the modules on some alien system

SML really dropped the ball when they didn't do this---one reason why
it's so hard to run an arbitrary SML program on an arbitrary SML
implementation.  Objective Caml and PLT Scheme have this right
generally.  (Even though some details could arguably be nicer.)  We
really need to be able to create a tarball of R6RS code, drop it
somewhere else and run it with some other Scheme implementation.

-- 
Cheers =8-} Mike
Friede, V?lkerverst?ndigung und ?berhaupt blabla


More information about the R6RS mailing list