# New Ticket Created by "Carl Mäsak" # Please include the string: [perl #124036] # in the subject line of all future correspondence about this issue. # <URL: https://rt.perl.org/Ticket/Display.html?id=124036 >
<Ven> m: sub trait_mod:<is>(&c, :$curried!) { my $arity = &c.arity; &c.wrap(-> |args { args.list.elems == $arity ?? callsame() !! &c.assuming(|args); }); }; sub foo($a, $b) is curried { say $a + $b; }; foo(3, 4); my $c = foo(5); $c(6); <camelia> rakudo-moar f8002f: OUTPUT«===SORRY!=== Error while compiling /tmp/CqAnyz9U98Calling 'foo' will never work with argument types (int) Expected: :(Any $a, Any $b)at /tmp/CqAnyz9U98:1------> ed { say $a + $b; }; foo(3, 4); my $c = ⏏foo(5); $c(6);» <Ven> if an "is" wraps a sub, then it probably shouldnt get checked :) * masak can't decide who is right, Ven or Rakudo <masak> probably Ven. * masak submits rakudobug <Ven> :D <masak> Ven: it is seldom this close. congratulations. <Ven> thanks, I guess * psch agrees <psch> m: sub trait_mod:<is>(&c, :$curried!) { my $arity = &c.arity; &c.wrap(-> |args { args.list.elems == $arity ?? callsame() !! &c.assuming(|args); }); }; my &foo = sub ($a, $b) is curried { say $a + $b; }; foo(3)(4) # seeing as this works <camelia> rakudo-moar f8002f: OUTPUT«7» <PerlJam> psch++ <psch> but then we can't rebind a normal sub declaration either <psch> which i think was justified with "it would break optimisation" <psch> having the distinction makes "sub foo { }" somewhat magical over "my &foo = sub { }", which is surprising, and with the bit of jnthn++'s FOSDEM talk that i watched yesterday even seems wrong, because "sub foo { }" is supposed to be just a lexical declaration (unless there was more that i missed)