perl_mlb
view release on metacpan or search on metacpan
my $placeholder = bless { arity=>1, impl=>sub{$_[1+$_[0]]} };
sub __() { $placeholder }
sub __arg($)
{
my $index = $_[0]+1;
bless { arity=>0, impl=>sub{$_[$index]} };
}
sub hosub(&@)
{
# WRITE THIS
}
sub call
{
my ($self,@args) = @_;
return $self->{impl}->(0,@args);
}
sub meta_bop(&)
{
my ($op) = @_;
sub
{
my ($left, $right, $reversed) = @_;
($right,$left) = @_ if $reversed;
my $rop = ref $right eq 'Switch'
? $right
: bless { arity=>0, impl=>sub{$right} };
return bless {
arity => $arity,
impl => sub { my $start = shift;
return $op->($lop->{impl}->($start,@_),
$rop->{impl}->($start+$lop->{arity},@_));
}
};
};
}
sub meta_uop(&)
{
my ($op) = @_;
sub
{
my ($left) = @_;
my $lop = ref $left eq 'Switch'
? $left
: bless { arity=>0, impl=>sub{$left} };
( run in 0.874 second using v1.01-cache-2.11-cpan-49f99fa48dc )