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