---
name: "Moose::Autobox::Code"
section: "3pm"
platform: "linux"
package: "libmoose-autobox-perl"
version: "0.16-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Moose::Autobox::Code"
---

# Moose::Autobox::Code(3pm)

the Code role

## NAME

Moose::Autobox::Code - the Code role

## VERSION

version 0.16

## SYNOPSIS

```
  use Moose::Autobox;
  my $adder = sub { $_[0] + $_[1] };
  my $add_2 = $adder->curry(2);
  $add_2->(2); # returns 4
  # create a recursive subroutine
  # using the Y combinator
  *factorial = sub {
      my $f = shift;
      sub {
          my $n = shift;
          return 1 if $n < 2;
          return $n * $f->($n - 1);
      }
  }->y;
  factorial(10) # returns 3628800
```

## DESCRIPTION

This is a role to describe operations on the Code type.

## METHODS

- "curry (@values)"

  - "rcurry (@values)"

  - "conjoin (\\&sub)"

  - "disjoin (\\&sub)"

  - "compose (@subs)"

  This will take a list of `@subs` and compose them all into a single subroutine where the output of one sub will be the input of another.

- "y"

  This implements the Y combinator.

- "u"

  This implements the U combinator.

- "meta"

  ## SEE ALSO

- \<http://en.wikipedia.org/wiki/Fixed\_point\_combinator\>

  - \<http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/20469\>

  ## SUPPORT

Bugs may be submitted through the RT bug tracker \<https://rt.cpan.org/Public/Dist/Display.html?Name=Moose-Autobox\> (or bug-Moose-Autobox@rt.cpan.org \<mailto:bug-Moose-Autobox@rt.cpan.org\>).

There is also a mailing list available for users of this distribution, at \<http://lists.perl.org/list/moose.html\>.

There is also an irc channel available for users of this distribution, at `"#moose"` on `"irc.perl.org"` \<irc://irc.perl.org/#moose\>.

## AUTHOR

Stevan Little \<stevan.little@iinteractive.com\>

## COPYRIGHT AND LICENSE

This software is copyright (c) 2006 by Infinity Interactive, Inc.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
