Re: Partial orders. Re: Comments on SRFI 128 Draft 5 (2015-11-08).
Sudarshan S Chawathe 10 Nov 2015 15:05 UTC
John Cowan wrote:
> Sudarshan S Chawathe scripsit:
>
> > (make-comparator exact-integer?
> > =
> > (lambda (i j)
> > (and (even? i)
> > (even? j)
> > (< i j)))
> > number-hash)
>
> This clearly violates the programmer's responsibilities section, as
> I said before. The ordering predicate is required to be asymmetric.
> An asymmetric predicate is one in which, for all values of a and b,
> if (pred a b) is true than (pred b a) is false. This is obviously not
> true here, so what you have is a comparator whose behavior when passed
> to standard routines is undefined.
I agree that the SRFI requires the ordering predicate to be
asymmetric. I also agree with your definition of asymmetric
predicates.
However, I do not understand why you claim that the ordering predicate
in the above example (let's call it 'e<') is not asymmetric. Using
your definition, could you please exhibit values of 'a' and 'b' for
which (e< a b) is true and (e< a b) is not false? (If your claim is
true then at least one such pair a,b must exist.)
I have similar comments about the other example in my earlier message,
but perhaps it's best to focus on this one here.
Regards,
-chaw