R6RS does not allow multiple versions of a library to co-exist in a single
program. I believe this is a significant limitation, especially if libraries
are intended to promote sharing of large program components. Carl Eastlund
discusses the matter here
(
http://www.r6rs.org/formal-comments/comment-130.txt), but the editors'
response is weak. They fail to cite Microsoft's .NET, which does allow
multiple versions within a single program.
This strikes me as an obvious problem. If I use someone's component which
imports XML v.1.0, then I will not be able to use the new & improved XML
v2.0 anywhere in my program. What if I wish to import 2 components, but one
uses v1 and the other uses v2? With the existing restriction, I'm forced to
nag the author to update his code to v2.
What happens if I include version numbers as part of the name, e.g. (import
(xml v1) (xml v2))? I've circumvented the problem but lost the ability to
dynamically select a version at compile-time. I propose that version numbers
be considered a part of the library's name. The compiler would select a
version and then append the version reference to the library name.
If (import (xml ((>= 1)))) resolves to version 2, then the import is similar
to (import (xml 2)).
Or, lift the restriction and make it undefined or implementation specific.
At least provide a better explanation for this restriction than the one
offered to Eastlund's comment.
Thanks,
Pinku Surana
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
http://lists.r6rs.org/pipermail/r6rs-discuss/attachments/20070613/5e9cde66/attachment.htm
Received on Wed Jun 13 2007 - 11:32:03 UTC