I would argue that this would be prohibited by the compiler as it could not distinguish between foo(x::Number) = 2 and foo(x::Float64) = 3
But, it would be perfectly safe to have foo(a::TypeA) and foo(b::TypeB) Different functions in that case. In the example I gave, count was allowed to be exported from my two modules just by being defined by Base. Yet the two count's have different meanings from each other and from the Base.count. On the other hand steadystate() was not merged even though the end-result is the SAME: one would have two methods that work on different types of arguments and do different things. P
