[R6RS] `eqv?' on immutable records

Michael Sperber sperber at informatik.uni-tuebingen.de
Sun May 13 09:51:14 EDT 2007


William D Clinger <will at ccs.neu.edu> writes:

> Mike wrote:
>> > It was a mistake to tag immutable pairs, vectors, strings,
>> > and especially procedures with a location....
>>
>> I agree with you.  Is anyone here against fixing this, at least for
>> pairs, vectors, and strings?
>
> Kent apparently is.  With regard to the action of eqv?
> on quoted constants, he wrote:
>
>> These can all be done while preserving eqv? for quoted constants.  The
>> real question is whether we're going to allow naive implementations
>> that don't preserve eqv? for quoted constants.
>>
>> I'd rather require them to preserve eqv? for quoted constants.

In either case, consistency would be nice.  Currently, the situation is
confusing:

- We *require* location tagging for strings, vectors, pairs.
- We don't require location tagging for records.
- We don't require preserving `eqv?'-ness for quoted literals.
- We have

(let ((x '(a)))
  (eqv? x x)) => #t

I remember spending quite a bit of time with R5RS trying to figure out
the intention, and always that I was too stupid to find the wording in
question.

I think it's probably not very important to users---programs that depend
on eqv?-ness will probably be hard to read, but it'd be nice to save the
implementors some effort trying to figure this out.

It'd be even nicer if we could figure this out by e-mail.

-- 
Cheers =8-} Mike
Friede, Völkerverständigung und überhaupt blabla



More information about the R6RS mailing list