Consider

foo(a::Vector) = 1
bar(a::Vector{Tuple}) = 2
baz(a::Vector{Tuple{AbstractString, AbstractString}}) = 3


foo(a::AbstractString) = foo([(a,a)])
bar(a::AbstractString) = bar([(a,a)])
baz(a::AbstractString) = baz([(a,a)])

Results:

julia> foo("a")
1

julia> bar("a")
ERROR: MethodError: `bar` has no method matching 
bar(::Array{Tuple{ASCIIString,ASCIIString},1})
 in bar at none:1

julia> baz("a")
ERROR: MethodError: `bar` has no method matching 
bar(::Array{Tuple{ASCIIString,ASCIIString},1})
 in baz at none:1

I understand why foo() works, but why do bar() or baz() both fail?

Reply via email to