foo
[gitmo/Moose-Autobox.git] / lib / Moose / Autobox / Code.pm
diff --git a/lib/Moose/Autobox/Code.pm b/lib/Moose/Autobox/Code.pm
new file mode 100644 (file)
index 0000000..f58b9a7
--- /dev/null
@@ -0,0 +1,34 @@
+package Moose::Autobox::Code;
+use Moose::Role 'with';
+
+our $VERSION = '0.01';
+
+with 'Moose::Autobox::Ref';
+
+sub curry {
+    my ($f, @a) = @_;
+    return sub { $f->(@a, @_) }
+}
+
+sub rcurry {
+    my ($f, @a) = @_;
+    return sub { $f->(@_, @a) }
+}
+
+sub compose {
+       my ($f, $f2, @rest) = @_;
+    return $f if !$f2;
+    return (sub { $f2->($f->(@_)) })->compose(@rest);
+}
+
+sub disjoin {
+    my ($f, $f2) = @_;
+    return sub { $f->(@_) || $f2->(@_) }
+}
+        
+sub conjoin {
+       my ($f, $f2) = @_;
+       return sub { $f->(@_) && $f2->(@_) }    
+}
+
+1;
\ No newline at end of file