FunctionalPerl
view release on metacpan or search on metacpan
lib/FP/Currying.pm view on Meta::CPAN
# returns a fn that takes a variable number of additional args. When
# called, the returned function calls f with args + additional args."
sub partial {
my ($f, @p) = @_;
sub {
@_ = (@p, @_);
goto \&$f
}
}
# Macros would be useful here.
sub uncurry_1_1 {
@_ == 1 or fp_croak_arity 1;
my ($f) = @_;
sub {
@_ == 2 or fp_croak_arity 2;
my ($a, $b) = @_;
$f->($a)->($b)
}
}
lib/FP/Predicates.pm view on Meta::CPAN
TEST {
my $t = complement(\&is_natural);
[map { &$t($_) } (-1, 0, 1, 2, "foo")]
}
[1, 1, 0, 0, 1];
sub either {
my (@fn) = @_;
sub {
# Meh, code it up all twice. Macros anyone?
if ($FP::Failure::use_failure) {
my @failures;
for my $fn (@fn) {
my $r = &$fn;
return $r if $r;
push @failures, $r
}
failwith \@failures, "either"
} else {
for my $fn (@fn) {
( run in 0.573 second using v1.01-cache-2.11-cpan-49f99fa48dc )