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

21 lines
323 B
Plaintext

###
### curry.set_prototype
###
## Chapter 7 section 2.2.1
# Doesn't work before 5.8.1
use Scalar::Util 'set_prototype';
sub curry {
my $f = shift;
my $PROTOTYPE = shift;
set_prototype(sub {
my $first_arg = shift;
my $r = sub { $f->($first_arg, @_) };
return @_ ? $r->(@_) : $r;
}, $PROTOTYPE);
}