One can’t be a shorthand for the other because they mean different things. It comes down to the same thing that’s explained here: Types · The Julia Language where Point{Real} is not the same as Point{T} where {T <: Real} because a Point{Int} is not a subtype of Point{Real}. LIkewise a Pair{Symbol, Float64} is not a subtype of Point{Symbol, Number}; they’re actually distinct types.