This is in the Julia FAQ. There are many discussions that try to help explain this. See e.g.
- Problem with Complex{Rationals} - #7 by stevengj
- Why [1, 2, 3] is not a Vector{Number}? - #19 by stevengj
- Why [1, 2, 3] is not a Vector{Number}? - #28 by StefanKarpinski
I guess you are asking specifically about As noted by @nsajko below, the bottom type Vector{<:Float64}. Realize that Vector{<:T} for any type T is a set of types: Vector types for any subtype of T. Now, I guess your point is that, since Float64 is concrete, it has exactly one subtype Float64, so Vector{<:Float64} is a set containing only one element, Vector{Float64}. Still, in mathematics we generally don’t equate a set of a single element with that element: \{x\} \ne x.Union{} is a subtype of Float64, so Vector{Union{}} <: Vector{<:Float64}.