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

_______________________________________________
r6rs-discuss mailing list
r6rs-discuss@lists.r6rs.org
http://lists.r6rs.org/cgi-bin/mailman/listinfo/r6rs-discuss

Reply via email to