# New Ticket Created by Bruce Gray
# Please include the string: [perl #78738]
# in the subject line of all future correspondence about this issue.
# <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=78738 >
On Rakudo Star 2010-10, this code works as expected, outputting "42\n"
:
multi sub Bar ( ) { return 42 };
say Bar();
This code should give the same output (and *does* on Pugs):
multi sub Bar ( ) { return 42 };
multi sub Bar (:$baz!) { return $baz };
say Bar();
Instead, Rakudo dies on this error:
No applicable candidates found to dispatch to for 'Bar'. Available
candidates are:
:()
:(Any :baz($baz)!)
IMHO, required named parameters should default to being part of the
longname.
In any case, the current behavior looks like a bug.
>From http://irclog.perlgeek.de/perl6/2010-10-31#i_2956591
< Util> perl6: say Bar(); multi sub Bar ( ) { return 42 };
<+p6eval> pugs, rakudo 5f5bae: OUTPUT<<42NL>>
< Util> perl6: say Bar(); multi sub Bar ( ) { return 42 }; multi
sub Bar (:$baz!) { return $baz };
<+p6eval> rakudo 5f5bae: OUTPUT<<No applicable candidates found to
dispatch to for 'Bar'. Available candidates
are:NL:()NL:(Any :baz($baz)!)NLNL in main program body
at line 22:/tmp/UGNiomLxSCNL>>
<+p6eval> ..pugs: OUTPUT<<42NL>>
< Util> In Rakudo, why is the second declaration interfering?
< masak> looks like a bug to me.
< masak> ...possibly reported already.
< sorear> Perl 6.0 is not required to support multiple dispatch
with named parameters
< masak> but I thought Rakudo did.
< jnthn> No
< jnthn> Well, it doesn't consider them other than as constraints.
< jnthn> e.g. if one is required it's a constraint.
< Util> sorear: it is more than just a named parm; it is a
*required* named parm.
Shouldn't that make it part of the dispatch?
< masak> apparently, it's difficult to do that in practice.
< jnthn> Rakudo already considered required named params as
constraints.
< jnthn> Otherwise a bunch of our trait_mods would never work.
< jnthn> It even has an optimization for the
single-required-named-param case. :-)
< jnthn> Util: Can you file a ticket?
< jnthn> That looks like a bug to me. :S
< Util> Will file rakudobug. Thanks, all!
< jnthn> Util++
< jnthn> But it turns out to be a silly thinko. :-)
< jnthn> Somewhere in that little file, perl6multisub.pmc :-)
< jnthn> masak: There's another one in RT that I think is distinct
from this but may end up related in the end.
< masak> jnthn: ok. I didn't find anything about required nameds.
< jnthn> masak: I think it was about an argless candidate.
< jnthn> Or at least, that's the common dominator between these
two.
--
Hope this helps,
Bruce Gray (Util)