The `eqv?' definition says that records are equivalent if denoting the
same location and points to section 3.4, which explains that the notion
of "storage being newly allocated" is what denotes the creation of
objects with distinct locations, yet section 5.5 (<constructor name>
point) doesn't use that phrase. In short, we base record equivalence
semantics on their location, yet don't specify their location.
The section needs to be expanded to specify at least the discerning of
obviously inequivalent records (mutable and created with distinct calls
to the constructor, or immutable but having non-eqv? fields). (Note
that we already support immutable record types by omitting mutators.)
"The returned record must be newly allocated if any <modifier name> is
provided, or if not all fields have an initial value that is equivalent
per eqv? (section 6.1) to the corresponding field value of a record of
the same type."
Ideally, IMO, the equivalence semantics of all objects created with
constructors would follow the logic we used for procedures
Maybe in R8RS. :-)
_______________________________________________ Scheme-reports mailing list Scheme-reports@x http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports