[r6rs-discuss] [Formal] Version reference syntax is overly complex.

From: AndrevanTonder <andre>
Date: Wed, 20 Jun 2007 08:37:27 -0400 (EDT)

On Sat, 16 Jun 2007, Shiro Kawai wrote:

>>> Suggested alternative #2
>>> ------------------------
>>>
>>> Drop the whole library versioning idea from r6rs.

I would like to suggest

Suggested alternative #3:
-------------------------

   Give <version reference> the same syntax as <version>. A match occurs if
   <version reference> matches <version> up to the number of elements provided
   in <version reference>.

In other words, (rrs (6 2)) would match versions (6 2), (6 2 3), etc.

I think too much emphasis has been placed on /implementation/ ability to
specify complex version references. This ability invites fragility.
Instead, it would encourage better practice by keeping version references
simple and making it a /user/ responsibility to come up with a
consistent versioning scheme.

For example, the current specification allows one to specify that a client
program will work only with version (6 2) and not with version (6 2 3) of some
library. However, if this is the case, assigning version (6 2 3) to a library
that is not backward-compatible is clearly wrong, and providing the ability to
specify such a constraint will only encourage such errors. Ditto for
examples like (and (>= 6) (<= 7)), where a better way to do this is with
minor versions. For example, if the next Scheme report comes up with a
backward-compatible version of SYNTAX-CASE, the proper version number
of the new library should not be (rrs syntax-case (7)) but instead something
like (rrs syntax-case (6 1)).

Andre
Received on Wed Jun 20 2007 - 08:37:27 UTC

This archive was generated by hypermail 2.3.0 : Wed Oct 23 2024 - 09:15:01 UTC