On Sat, Jun 8, 2013 at 10:48 PM, John Cowan <cowan@x> wrote:
+1, with the addition of records after pairs and bytevectors after vectors.
Yes, sorry, I should have made that adjustment. I hereby revise my proposal. Below is the language after your revision, starting from the phrasing from R7RS draft 9:
The eqv? procedure returns #t if... obj1 and obj2 are procedures whose
location tags are equal.
The eqv? procedure returns #f if... obj1 and obj2 are procedures
that would behave differently (return different value(s) or have
different side effects) for some arguments.
The above definition of eqv? allows implementations latitude in
their treatment of procedures and literals: implementations are free
either to detect or to fail to detect that two procedures or two
literals are equivalent to each other, and can decide whether or not
to merge representations of equivalent objects by using the same
pointer or bit pattern to represent both.
On symbols, booleans, the empty list, pairs, procedures, records,
non-empty strings, vectors, and bytevectors, eq? and eqv? are