Jonathan Worthington wrote:
> Carl Mäsak (via RT) wrote:
>> # New Ticket Created by  "Carl Mäsak" 
>> # Please include the string:  [perl #64922]
>> # in the subject line of all future correspondence about this issue. 
>> # <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=64922 >
>>
>>
>> This might be in RT already, but I didn't find it, so...
>>
>> <ihrd> rakudo: multi foo (@a) { 1 }; multi foo ($a, %h?) { 2 }; say
>> foo(<1 2 3>);
>> <p6eval> rakudo 69b318: OUTPUT«Ambiguous dispatch to multi 'foo'.
>> Ambiguous candidates had signatures:␤:(Positional.new() @a)␤:(Any $a,
>> Associative.new() %h?) [...]
>> * masak submits rakudobug
>>
>> As for arity, both methods can match. But the first candidate has a
>> type constraint Positional on its first parameter, so it should be
>> narrower than the second one, which doesn't. 
> It's not so clear cut that this is a bug. Positional is a role, and is 
> done by some things (like List, Array, etc), but doesn't have a 
> relationship with Any in any way.

I thought all types match Any, except for Object and junction?

> The default parameter type is Any. 
> Thus if you try Positional ~~ Any, you'll get false (and vice versa - 
> they are tied types so far as the dispatcher is concerned).

Not in my copy of Rakudo, Positional ~~ Any is True there.

And if Positional !~~ Any, shouldn't it be a type check failure to bind
an array to $a?

Cheers,
Moritz

Reply via email to