# Abstract subtyping and type parameters

#1

Could someone please explain why N is not defined for T2, or how to achieve what I intend to do with a different syntax, preferrably in v0.5? Thanks alot.

``````julia> abstract T1{N,T}

julia> abstract T2{_N<:N, _T<:T} <: T1{N,T}
ERROR: UndefVarError: N not defined

julia> abstract T3{N, T} <: T1{N,T}

``````

#2

`abstract T2{N,T} <: T1{N,T}`?

`N` isn’t defined because you never defined it. Upper bounds are completely ambiguous. If `_N` is `Int`, is `N` an `Integer`? `Number` ? `Any` ? You would need to say exactly what `N` is because of this ambiguity.

#3

I see, so there is no way to “inherit” N from the supertype?

#4

What supertype? The supertype can be `T1{Int,T}`, `T1{Integer,T}`, `T1{Number,T}`, `T1{Any,T}`. Write down some examples and you’ll see this makes absolutely no sense and it’s not decidable in the least bit.

#5

I will rethink what I am trying to do. Thanks.