Acme-Lambda-Expr
view release on metacpan or search on metacpan
lib/Acme/Lambda/Expr/Bound.pm view on Meta::CPAN
package Acme::Lambda::Expr::Bound;
use Moose;
extends qw(Acme::Lambda::Expr::Proc);
has function => (
is => 'ro',
isa => 'Acme::Lambda::Expr::Term',
required => 1,
);
sub deparse{
my($self) = @_;
return sprintf 'sub{ %s }->(%s)',
$self->function->deparse,
join q{, }, map{ $_->deparse } $self->args;
}
sub stringify{
my($self) = @_;
return sprintf 'curry(%s, %s)',
$self->function,
join q{, }, $self->args;
}
sub codify{
my($self) = @_;
my $function = $self->function;
my @args = $self->args;
return sub{
@_ = map{ &{$_} } @args;
goto &{$function};
};
}
__PACKAGE__->meta->make_immutable();
( run in 1.869 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )