use Perl6::Currying;
sub add($a,$b) { $a + $b }
my $incr = &add.prebind(b=>1);
print $incr->(7), "\n";
my $div = sub ($x, $y) { $x / $y };
print $div->(22,7), "\n";
my $half_of = &$div.prebind(y=>2);
my $reciprocal = $div.prebind(x=>1);
print $half_of->(7), "\n";
print $reciprocal->(7), "\n";
my $pi_ish = &$div.prebind(y=>7, x=>22);
print $pi_ish->(), "\n";
my $one_half = &{$half_of}.prebind(x=>1);
print $one_half->(), "\n";
sub getdiv { return $div };
my $tenth = &{getdiv()}.prebind(y=>10);
print $tenth->(7), "\n";
eval { my $bad = $tenth.prebind(y=>'???') } or print $@;
eval { my $bad = $div.prebind(q=>'???') } or print $@;