-------------- 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.

Mark Biggar

Reply via email to