sub make_max_finder {
my $max;
sub {
for (@_) { $max = $_ if !defined $max || $_ > $max }
$max;
}
}
####
my $max_finder = make_max_finder();
##
##
$max_finder->(0);
print $max_finder->(); # 0
print $max_finder->(-1); # 0
print $max_finder->(2); # 2
##
##
print $max_finder->(-1, 3, 0); # 3
print $max_finder->(-1, 0, 1); # 3
##
##
my $max_finder = make_max_finder();
while (my $next_val = get_next_value()) {
$max_finder->($next_val);
}
$max_finder->(); # retrieve maximum
##
##
my $max_value = make_max_finder()->(@values);