# 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/CqAnyz9U98␤Calling '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)

Reply via email to