----- Original Message ----- 
From: "Damian Conway" <[EMAIL PROTECTED]>
To: "Larry Wall" <[EMAIL PROTECTED]>
Cc: "Perl 6 Language" <[EMAIL PROTECTED]>
Sent: Sunday, February 15, 2004 5:59 PM
Subject: [perl] Re: The Sort Problem


> Here's a proposed syntax and semantics for C<sort> that tries to preserve
the
> (excellent) features of Uri's "on the right track" proposal whilst
integrating
> it into the Perl 6 design without multiplying entities (especially
colons!)
> unnecessarily.
>
> Suppose C<sort>'s signature is:
>
>      type KeyExtractor ::= Code(Any) returns Any;
>
>      type Comparator   ::= Code(Any, Any) returns Int;
>
>      type Criterion    ::= KeyExtractor
>                          | Comparator
>                          | Pair(KeyExtractor, Comparator)
>                          ;
>
>      type Criteria     ::= Criterion
>                          | Array of Criterion
>                          ;
>
>      multi sub *sort(Criteria ?$by = {$^a cmp $^b}, [EMAIL PROTECTED]) {...}
>

   If we use this signature, won't the code
        sort ('foo', 'bar', 'glarch');

attempt to use the first parameter as a Criteria?  Since sort has to be a
multi sub anyhow, why don't we do

    multi sub *sort(Criteria $by : [EMAIL PROTECTED]) {...}
    multi sub *sort( : [EMAIL PROTECTED]) { ...} # returns sort {$^a cmp $^b} @data

Joe Gottman


Reply via email to