On Sat, May 18, 2002 at 10:25:50AM +0900, Christoph wrote:
> # observing that A <=> B raises an ArgumentError would be
> # enough to conclude that
> 
> A < B # => false
> B < A # => false

It seems to me that it's enough to conclude that A and B are not
comparable.  I wonder how this differs from the conclusion you drew.

> To appease your valid concerns it might be better to only catch
> ``ComparableErrors'' lets say
> 
> module Comparable
>     class Error < ArgumentError; end
>     def  <(other)
>         begin
>             (self <=> other) < 0 ? true : false
>         rescue  Error
>             false
>         end
>     end
>     # ...
> end

This seems like a good idea.  That way, I can retain exceptions and
still have partial orders (or, to think about it another way, partial
orders would be written explicitly rather than implicitly).

How do other languages handle this issue?

Paul