[R6RS] `eqv?' on immutable records

Michael Sperber sperber at informatik.uni-tuebingen.de
Fri May 11 07:55:17 EDT 2007

I need some guidance here: As Will pointed out, the semantics for `eqv?' 
on records is poorly specified right now.  I understand how to formulate
a general principle for mutable records, as mutable records denote
storage locations.  However, it seems we didn't intend immutable records
to denote storage locations, as the examples we have imply that unboxing
optimizations are allowed.  Nevertheless, we have

(let ((r (C v ...)))
  (eqv? r r)) => #t

where C is a constructor for an immutable record.  I´m not sure how to
formulate a general statement that makes this true, that won't also make
this true:

(let ((r (C v ...)))
  (eq? r r)) => #t

Help would be much appreciated.

More generally, we say right now that even immutable pairs, vectors, and
strings denote storage locations: In the light of the above, shouldn't
we also make adjustments here to make them the same as immutable

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

More information about the R6RS mailing list