Author: lwall Date: 2009-06-13 01:47:29 +0200 (Sat, 13 Jun 2009) New Revision: 27073
Modified: docs/Perl6/Spec/S32-setting-library/Containers.pod Log: [Containers] define .rotate more like a PDL slice, rely on other ops for exact semantics Modified: docs/Perl6/Spec/S32-setting-library/Containers.pod =================================================================== --- docs/Perl6/Spec/S32-setting-library/Containers.pod 2009-06-12 20:40:23 UTC (rev 27072) +++ docs/Perl6/Spec/S32-setting-library/Containers.pod 2009-06-12 23:47:29 UTC (rev 27073) @@ -269,6 +269,14 @@ Note that strings are now reversed with C<flip>. +=item rotate + + our List multi method rotate ( @values is copy: Int $n = 1) is export + +Produces a new list with the same elements as the old list, +rotated by the specified amount. See Array::rotate for more +info. + =item sort our Array multi method sort( @values: *&by ) @@ -482,10 +490,10 @@ =item rotate - our Array multi method rotate ( @array: Int $n = 1) is export + our Array multi method rotate ( @array is copy: Int $n = 1, Int *...@n) is export -Rotates the array and returns it. A positive rotation of 1 -is defined as: +Produces a new array with the same elements as the old array, +rotated by the specified amount. A positive rotation of 1 is defined as: @array.push(@array.shift); @@ -498,8 +506,19 @@ @array.rotate(sign($n)) for ^abs($n) -The modified array is returned. +The new array to be returned contains nothing but aliases for +the old array's elements; however, you can use this to get +any of three different semantic behaviors: + @a.=rotate # @a is rotated in place + @b = @a.rotate # @b contains copied elements of rotated @a + @b := @a.rotate # @b contains aliased elements of rotated @a + +If additional rotations are specified via the slurpy, they are +applied to subdimensions of multidimensional arrays. (To perform +a flat rotation on a shaped array requires flattening to a list +and rotating that instead.) + =item shift our Scalar multi method shift ( @array: ) is export