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.495 second using v1.01-cache-2.11-cpan-49f99fa48dc )