[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: r6rs libraries
From: |
Julian Graham |
Subject: |
Re: r6rs libraries |
Date: |
Fri, 6 Mar 2009 19:43:17 -0500 |
> Hmm, yes, but how about `foo/bar/baz-6.scm'? Is there a reason to
> reject it?
Well, the part of an R6RS library name that comes before its version
is only restricted in that that it must be an identifier -- so a
system that relied on filenames to locate libraries could have trouble
determining whether a file called ice-9-9.scm contained a library
named `(ice-9 (9))' or one named `(ice (9 9))'.
And this also doesn't address the problem of doing version matching as
part of hybrid module / library load process. After all, I don't
think there are any restrictions in R6RS on where libraries need to be
stored or how they can be located / loaded, so one thing we could do
is ditch the idea that version needs to go into the filename. Guile
could require that all installed versions of a particular library
would have to reside in the same file, the name of which would be
constructed of the non-version parts of the library name:
foo/bar/baz.scm would contain the code for:
`(foo bar baz (6))'
`(foo bar baz (6 1))'
and
`(foo bar baz (7))'
Using the module system to load that file, a la `(use-modules (foo bar
baz))' would cause, via a hook in the body of that file, all the
library expressions in that file to be stored in a data structure
accessible by the library system for the purposes of subsequent import
and expansion.
Regards,
Julian