On Sat, Jun 8, 2013 at 9:09 PM, John Cowan <[email protected]> wrote:
> I am now prepared to make a recommendation to WG1 on procedural > equivalence. I recommend that we return to R5RS semantics by rescinding > both tickets #125 and #467. This means that `eqv?` must return true on > procedures with the same location tags, must return false on procedures > that behave differently, may return either on all other pairs of > procedures, and `eq?` must always return the same as `eqv?` on procedures. > I agree with John's recommendation. R5RS is perfectly workable and well understood, and WG2 declarations will give implementers more latitude to allow optimizations that R5RS does not. My only request is that, in order to minimize confusion, we vote on specific language, not just the proposal that we "... return to R5RS semantics...." Therefore, I specifically propose that we preserve the following language, which I have copied directly from R5RS: 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. Eq? and eqv? are guaranteed to have the same behavior on symbols, booleans, the empty list, pairs, procedures, and non-empty strings and vectors.
_______________________________________________ Scheme-reports mailing list [email protected] http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports
