[r6rs-discuss] What's up with the library names?
aghuloum at cs.indiana.edu
Wed May 23 10:41:05 EDT 2007
On May 23, 2007, at 3:05 AM, Michael Sperber wrote:
> Abdulaziz Ghuloum <aghuloum at cs.indiana.edu> writes:
>> The names of all the standard libraries have changed from
>> (r6rs <something> ...) to (rnrs <something> ... (6)). Why?
>> First, this is making the names really ugly :-). Having to
>> type (rnrs base (6)) instead of (r6rs base) means adding this
>> superfluous (6) to every single standard imported library in
>> every library I write. It just feels like you don't want me
>> to use it by making the syntax ugly.
> Actually, you don't have to type the (6), at least until R7RS
> comes out, even though it's probably safer.
As I said, (rnrs base) is meaningless since we cannot speak for
the rnrs reports for n != 6. And if you're saying it's safer,
which I agree with, then (r6rs base) is even better as there is
no ambiguity regarding which library you meant to import.
> As always, beauty is in the eye of the
> beholder: suggestions for improvement are always appreciated.
I did make a suggestion already.
>> Second (seriously now), if your motivation behind adding the
>> version number is to allow future revisions to r6rs (before
> No, the motivation is to allow more possible sharing between
> libraries specified in R6RS and R7RS.
No. If you have a library that imports an unversioned (rnrs X),
then odds are that it will break. Worse, the import line does not
even say which version of X is required.
By this move, you will be making the transition to future reports
harder for both users and implementors. If my implementation has
the battery of (r6rs . x) libraries and r7rs comes out, I can
simply add the (r7rs . y) libraries and have the implementation
be both r6rs and r7rs compliant at the same time (assuming no
major changes happen). This makes it possible to run r6rs programs
and makes people transition more smoothly by switching their code
over one library at a time. With the (rnrs X (version)) scheme,
you just cannot mix both r6rs and r7rs code since the two libraries,
by virtue of having the same name, conflict with one another and
cannot co-exist in the same system (this both required by the
current draft and is a sensible decision).
Another problem here is that you will be forcing the future
editors to live with decisions that you're making right now.
For example, the future editors would be more inclined to keep
the same library names contents just for the sake of not breaking
other rnrs programs. If r6rs and r7rs libraries have different
names, then r7rs can reorganize the entire library structure
without breaking a single r6rs program.
In addition to reverting the names of the standard libraries back
to where they were in r5.92rs, may I make one more suggestion.
As we're nearing the end of the discussion, when it comes to making
major changes, it might be better to post a formal comment about it
beforehand (just like how Will and Kent have been doing so far) so
that major changes do not come as a shock. Like when I saw that
there is a (r6rs mutable-strings) library added, I remembered that
there was a long discussion that lead to this, so I accepted it
(even if I don't like it). But if things keep changing arbitrarily
and without prior formal comments and discussions, then this will
just make finalizing the report much harder for all of us.
Do I need to post a formal comment to request that the names get
More information about the r6rs-discuss