This is my try to clarify comparator-register-default! - append this in the
existing description.  (I'm not sure if it's grammatically correct or clear enough)

"
This restriction ensures comparator-register-default! to only extend the
existing default comparator in a way that it accepts more types of objects
that have been deemed an error otherwise, but not alter its behavior on the
types of objects that had already been accepted.
"



On Tue, Feb 9, 2016 at 4:45 PM, Shiro Kawai <xxxxxx@gmail.com> wrote:
comparator-register-default! is certainly trickly; the important part is "It is an error if any value
is satisfied ... " clause.  With that, this procedure can only extend the default comparator but
can't alter its behavior in other ways (that is, calling it would make a piece of code run that
would have thrown an error otherwise, but it wouldn't make a piece of code return different
result.)   Of course, it's a different matter how the implementation check the disjointness
condition.

I, too, had to read the spec several times to understand its implication.  Would it be better to
note the fact?


On Tue, Feb 9, 2016 at 3:24 PM, John Cowan <xxxxxx@mercury.ccil.org> wrote:
Takashi Kato scripsit:

> - make-vector-comparator contains ']]' but no '[['. Seems not needed.
> - In description of comparator-if<=>, <object1 doesn't have >
> - comparator-if<=> doesn't say the comparison is done for given
> <object1> and <object2>.
>   it is rather obvious in which order should be done but might be
> helpful to specify it.
> - Test case contains fake-hash-salt but no definition.

Fixed.

> - Should hash functions signal an error if given obj type does not
> match the type of function?

It can do that but is not required to.

>   e.g. (boolean-hash 'a) ;; -> ?

It can return an exact integer or a random Scheme object, signal an
error, wipe your hard disk, or make demons fly out of your nose.

> - Should comparator-register-default! affect comparators already
> returned by make-default-comparator?

Again, it can do that but is not required to.

> - Default comparator of comparator-if<=>. Should comparator-if<=>
> evaluate (make-default-comparator) each time or it can be the same
> object?

It can be the same or different.

> - I'm implementing this SRFI atop SRFI-114 and it seems test case requires
>   comparator-ordering-predicate to return the procedure passed to
> make-comparator.
>   Is this required by the SRFI?

No.  I have commented out those tests.

--
John Cowan          http://www.ccil.org/~cowan        xxxxxx@ccil.org
'Tis the Linux rebellion / Let coders take their place,
The Linux-nationale / Shall Microsoft outpace,
We can write better programs / Our CPUs won't stall,
So raise the penguin banner of / The Linux-nationale.  --Greg Baker