-------------- Original message ----------------------
From: "Jonathan Lang" <[EMAIL PROTECTED]>
> TSa wrote:
> > Jonathan Lang wrote:
> > > If at all possible, I would expect Complex to compose Num, thus
> > > letting a Complex be used anywhere that a Num is requested.
> > This will not work. The Num type is ordered the Complex type isn't.
> > The operators <, <=, > and >= are not available in Complex.
> They can be:
> $A > $B if $A.x > $B.x | $A.y > $B.y;
> $A < $B if $A.x < $B.x | $A.y < $B.y;
> This also allows you to unambiguously order any arbitrary set of
> complex numbers.
> Pipe dream: it would be nice if something similar to the above
> (faulty) code counted as valid Perl 6 logic programming.
That dosn't work. 1+2i < 2+1i then evaluates to (true | false) which is
ambigious and can't be use to sort. Num."<=" as usually defined has certain
properties: it's transitive: a<= && b<=c --> a <= c, it's reflexive: a<=a, it's
anti-symetric: a<=b && b<=a --> a==b and it's total: one of a<=b or b<=a must
hold. a<b is then defined to be a<=b && !(a==b). Note these are the
properties needed sort a list of something. It is impossible to define "<=" on
Complex so that is has all these properties and also that Nums compared using
the Complex version of "<=" gives the same result as using the Num version of
"<=". Note that you need this to work that way if you want Num to be a
subtype of Complex.