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