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