--- /dev/null
+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