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

Reply via email to