# Are there any (long term) plans to add higher order generics (a.k.a. higher kinded types) to Julia?

**URL:** https://discourse.julialang.org/t/are-there-any-long-term-plans-to-add-higher-order-generics-a-k-a-higher-kinded-types-to-julia/1570
**Category:** Internals & Design
**Tags:** question
**Created:** [January 18, 2017, 2:46pm UTC](https://discourse.julialang.org/t/are-there-any-long-term-plans-to-add-higher-order-generics-a-k-a-higher-kinded-types-to-julia/1570 "2017-01-18T14:46:59Z")
**Posts on this page:** 1
**Showing post:** 26

<div class="post-metadata">

### Author: ![Sighoya](https://avatars.discourse-cdn.com/v4/letter/s/a87d85/32.png) [@Sighoya](https://discourse.julialang.org/u/Sighoya)
#### Post date: [October 11, 2017, 9:36am UTC](https://discourse.julialang.org/t/are-there-any-long-term-plans-to-add-higher-order-generics-a-k-a-higher-kinded-types-to-julia/1570/26 "2017-10-11T09:36:20Z")

</div>

No, it is not the same as in [Higher Ranked Types](https://discourse.julialang.org/t/are-there-any-plans-to-support-higher-order-ranked-types-in-julia/6137/19).  
What I want here is to support Higher kinded types (Nested generics).

We can as Jeff said construct types already by

```julia
compose(a::Type,b::Type,c::Type)=a{b{c}}

```

but how do we type check such a nested type in a function?  
This here do not work:

```julia
f(thing::Type{Type{Type}})=...

```

With the NestedType, which is probably not a Meta Type as I see yet  
you could say equivalently:

```julia
f(thing::S{T{R}}) where {S,T,R}=...

```

which rewrites to:

```julia
f(thing::V) where {V isa NestedType{2,N} where N}=...

```

---

_[View the full topic](https://discourse.julialang.org/t/are-there-any-long-term-plans-to-add-higher-order-generics-a-k-a-higher-kinded-types-to-julia/1570)._
