![]() |
![]()
| ![]() |
![]()
NAMEData::Util::Curry - Curries functions and methods SYNOPSISuse feature 'say'; use Data::Util qw(curry); sub sum{ my $total = 0; for my $x(@_){ $total += $x; } return $total; } # placeholder "\0" indicates a subscript of the arguments say curry(\&add, \0, 42)->(10); # 52 # placeholder "*_" indicates all the arguments say curry(\&add, *_)->(1 .. 10); # 55 # two subscripts and the rest of the arguments say curry(\&add, *_, \1, \0)->(1 .. 5); # 3 + 4 + 5 + 1 + 2 DESCRIPTION(todo) EXAMPLESCurrying Functionscurry(\&f, \0, 2)->(1); # f(1, 2) curry(\&f, 3, \0)->(4); # f(3, 4) curry(\&f, *_)->(5, 6); # f(5, 6) curry(\&f, \0, \1, *_)->(1, 2, 3, 4); # f(1, 2, 3, 4) curry(\&f, *_, \0, \1)->(1, 2, 3, 4); # f(3, 4, 1, 2) Currying Methodscurry($obj, 'something', *_)->(1, 2); # $obj->something(1, 2) curry($obj, 'something', foo => \0, bar => \1)->(1, 2); # $obj->something(foo => 1, bar => 2) curry(\0, 'something', \1)->($obj, 42); # $obj->something(42) curry($obj, \0, *_)->('something', 1, 2); # $obj->something(1, 2) Argument Semanticssub incr{ $_[0]++ } my $i = 0; curry(\&incr, \0)->($i); # $i++ curry(\&incr, *_)->($i); # $i++ curry(\&incr, $i)->(); # $i++ SEE ALSOData::Util.
|