Author: lwall
Date: 2009-01-27 01:44:28 +0100 (Tue, 27 Jan 2009)
New Revision: 25049

Modified:
   docs/Perl6/Spec/S29-functions.pod
Log:
[S29] expand on use of * in orderings
sort, min, and max shouldn't have an optional positional before a slurpy
junctional functions take *...@array, not a single @array parameter
hence the corresponding methods are not exported


Modified: docs/Perl6/Spec/S29-functions.pod
===================================================================
--- docs/Perl6/Spec/S29-functions.pod   2009-01-27 00:08:23 UTC (rev 25048)
+++ docs/Perl6/Spec/S29-functions.pod   2009-01-27 00:44:28 UTC (rev 25049)
@@ -14,8 +14,8 @@
                 Carl Mäsak <cma...@gmail.com>
                 Moritz Lenz <mor...@faui2k3.org>
  Date:          12 Mar 2005
- Last Modified: 24 Jan 2009
- Version:       38
+ Last Modified: 26 Jan 2009
+ Version:       39
 
 The document is a draft.
 
@@ -121,7 +121,7 @@
  subset Comparator   of Code where { .sig === :(Any, Any --> Int ) };
  subset OrderingPair of Pair where { .left ~~ KeyExtractor && .right ~~ 
Comparator };
 
- subset Ordering where Signature | KeyExtractor | Comparator | OrderingPair;
+ subset Ordering where Signature | KeyExtractor | Comparator | OrderingPair | 
Whatever;
 
 Used to handle comparisons between things.  Generally this
 ends up in functions like C<cmp()>, C<eqv()>, C<sort()>,
@@ -156,6 +156,13 @@
 Internally the result of the KeyExtractor on a value should
 be cached.
 
+Note that it is very easy to generate a simple C<KeyExtractor>
+using C<~*> for strings and C<+*> for numbers, since with most
+simple operators C<*> returns a closure of one argument.
+
+    @sorted = sort +*, @unsorted;  #ascending numeric
+    @sorted = sort -*, @unsorted;  #descending numeric
+
 =item OrderingPair
 
 A combination of the two methods above, for when one wishes
@@ -177,6 +184,12 @@
 performed if an early one determines an increasing or decreasing
 order.  For equivalence the list is reduced as if using [&&].
 
+=item Whatever
+
+An ordering of C<*> does the default comparison for the operator:
+
+    @sorted = sort *, @unsorted;
+
 =back
 
 =back
@@ -950,7 +963,7 @@
  our Array multi method sort( @values: Ordering $by = &infix:<cmp> )
 
  our List multi sort( Ordering @by,  *...@values )
- our List multi sort( Ordering $by = &infix:<cmp>, *...@values )
+ our List multi sort( Ordering $by, *...@values )
 
 Returns C<@values> sorted, using criteria C<$by> or C<@by> for
 comparisons. C<@by> differs from C<$by> in that each criterion is
@@ -984,7 +997,7 @@
  our Array multi method min( @values: Ordering $by = &infix:<cmp> )
 
  our List multi min( Ordering @by,  *...@values )
- our List multi min( Ordering $by = &infix:<cmp>, *...@values )
+ our List multi min( Ordering $by,  *...@values )
 
 Returns the earliest (i.e., lowest index) minimum element
 of C<@values> , using criteria C<$by> or C<@by> for
@@ -998,6 +1011,9 @@
 is used as an C<Ordering> then sort-specific traits such as C<is
 canonicalized($how)> are allowed on the positional elements.
 
+For a C<min> function that does not require an ordering, see the
+C<[min]> reduction operator.
+
 =item max
 
  our Array multi method max( @values: *&by )
@@ -1005,7 +1021,7 @@
  our Array multi method max( @values: Ordering $by = &infix:<cmp> )
 
  our List multi max( Ordering @by,  *...@values )
- our List multi max( Ordering $by = &infix:<cmp>, *...@values )
+ our List multi max( Ordering $by,  *...@values )
 
 Returns the earliest (i.e., lowest index) maximum element
 of C<@values> , using criteria C<$by> or C<@by> for
@@ -1019,10 +1035,13 @@
 is used as an C<Ordering> then sort-specific traits such as C<is
 canonicalized($how)> are allowed on the positional elements.
 
+For a C<max> function that does not require an ordering, see the
+C<[max]> reduction operator.
+
 =item any
 
- our Junction multi method any( @values: ) is export
- our Junction multi any( @values ) is export
+ our Junction multi method any( @values: )
+ our Junction multi any( *...@values ) is export
 
 Returns a junction with all the values of the list C<|>-ed together. The
 junction will only match against another value if at least one of the
@@ -1030,8 +1049,8 @@
 
 =item all
 
- our Junction multi method all( @values: ) is export
- our Junction multi all( @values ) is export
+ our Junction multi method all( @values: )
+ our Junction multi all( *...@values ) is export
 
 Returns a junction with all the values of the list C<&>-ed together. The
 junction will only match against another value if all of the values in the
@@ -1039,8 +1058,8 @@
 
 =item one
 
- our Junction multi method one( @values: ) is export
- our Junction multi one( @values ) is export
+ our Junction multi method one( @values: )
+ our Junction multi one( *...@values ) is export
 
 Returns a junction with all the values of the list C<^>-ed together. The
 junction will only match against another value if exactly one of the values
@@ -1048,8 +1067,8 @@
 
 =item none
 
- our Junction multi method none( @values: ) is export
- our Junction multi none( @values ) is export
+ our Junction multi method none( @values: )
+ our Junction multi none( *...@values ) is export
 
 Returns a junction which will only match against another value if none of
 the values in the list matches.

Reply via email to