[R6RS] underspecification of eqv? and eq? on records

William D Clinger will at ccs.neu.edu
Sun Mar 18 13:18:19 EDT 2007

While implementing (r6rs records procedural), I noticed
that section 5.1 says several things like

    For any constructor returned by record-constructor,
    the following holds:

        (let ((x (constructor v ...)))
          (eqv? x x))                   ==> #t

That allows behavior such as the following, which will
not be difficult for me to implement in Larceny's highly
pedantic R6RS-conforming mode [1]:

        (let ((x (constructor v ...)))
          (list 3 4)
          (eqv? x x))                   ==> #f

If the purpose of the examples in section 5.1 is to
describe the behavior of eqv? on records, they fail
miserably.  A more rigorous explanation is needed.


[1] http://larceny.ccs.neu.edu/larceny-trac/wiki/R6RSconversion

More information about the R6RS mailing list