Files
devops/perl/Examples/Chap7/reduce
2025-09-17 16:08:16 +08:00

25 lines
351 B
Plaintext

###
### reduce
###
## Chapter 7 section 3
sub reduce (&;$@) {
my $code = shift;
my $f = sub {
my $base_val = shift;
my $g = sub {
my $val = $base_val;
for (@_) {
local ($a, $b) = ($val, $_);
$val = $code->($val, $_);
}
return $val;
};
@_ ? $g->(@_) : $g;
};
@_ ? $f->(@_) : $f;
}