foo
[gitmo/Moose-Autobox.git] / lib / Moose / Autobox / Code.pm
CommitLineData
5f654d8e 1package Moose::Autobox::Code;
2use Moose::Role 'with';
3
4our $VERSION = '0.01';
5
6with 'Moose::Autobox::Ref';
7
8sub curry {
9 my ($f, @a) = @_;
10 return sub { $f->(@a, @_) }
11}
12
13sub rcurry {
14 my ($f, @a) = @_;
15 return sub { $f->(@_, @a) }
16}
17
18sub compose {
19 my ($f, $f2, @rest) = @_;
20 return $f if !$f2;
21 return (sub { $f2->($f->(@_)) })->compose(@rest);
22}
23
24sub disjoin {
25 my ($f, $f2) = @_;
26 return sub { $f->(@_) || $f2->(@_) }
27}
28
29sub conjoin {
30 my ($f, $f2) = @_;
31 return sub { $f->(@_) && $f2->(@_) }
32}
33
341;