my $sum =( @rray[0] +
(@rray[1] + @rray[2] ));
with 3 elements
Slide 101
Slide 101 text
my $sum =(( @rray[0] +
@rray[1])+@rray[2]);
with 3 elements
Slide 102
Slide 102 text
#associativity left
my $sum = [ + ] @rray;
# (((..+..) + ..) + ..)
foldl / foldr
Slide 103
Slide 103 text
f o l d l :
: (
a -
> b -
> a )
-
> a -
> [ b ] -
> a
f o l d l f z [ ] = z
f o l d l f z (
x :
x s )
=
f o l d l f (
f z x )
x s
foldl
Slide 104
Slide 104 text
sub add (Int $a, Int $b --> Int) {$a + $b};
sub foldl( &f:(Int, Int --> Int ),
Int $sum, List:Int $l --> Int) {
if $l.elems > 0 {
my Int $first = shift $l;
foldl(&f, &f($sum, $first), $l)}
else {$sum} };
say foldl(&add, 0, [1..4]);
foldl in P6
Slide 105
Slide 105 text
not there out of box
easy to implement because
nested signtures
foldl in P6
Slide 106
Slide 106 text
#associativity left
my $sum = [ + ] @rray;
# (((..+..) + ..) + ..)
foldl / foldr
Slide 107
Slide 107 text
#uses associativity of Op
my $sum = [ + ] @rray;
foldl / foldr