On 8/17/07, Aubrey Jaffer <agj at alum.mit.edu> wrote:
> | To the best of my knowledge, R5.97RS needs no extension to portably
> | define SRFI 63 as a library.
>
> The difficulty comes not in creating the library, but in using it!
> Because SRFI-63 exports `equal?', the instructions for its use must
> include a caveat:
>
> When importing SRFI-63, `equal?' must be excepted from (rnrs base).
This should be obvious to anyone familiar with the R6RS library system
and should be able to go unstated. (Let me also point out that users
could instead except the SRFI-63 equal?, or one or both could be
renamed to co-exist gracefully.)
> Of course, none of this makes SRFI-63's `equal?', `assoc', or `member'
> visible in libraries which don't import it.
Exactly. How can I write a correct program if the bindings I use can
be steamrolled to have arbitrary meaning by the libraries I use (or
the libraries used by the users of my program)? Just because I want
arrays doesn't mean that I want to break all the programs that rely on
invariants such as:
(eq? x y) ==> #t implies (equal? x y) ==> #t
Which would be the case with SRFI 63's equal?.
> One price of the R5.97RS library system has been the sacrifice of
> being able to extend existing procedures to new datatypes.
In what way did we enjoy this ability before?
David
Received on Fri Aug 17 2007 - 15:38:31 UTC
This archive was generated by hypermail 2.3.0
: Wed Oct 23 2024 - 09:15:01 UTC