# Are there any plans to support higher order ranked types in julia?

**URL:** <https://discourse.julialang.org/t/are-there-any-plans-to-support-higher-order-ranked-types-in-julia/6137>\
**Category:** Internals & Design\
**Tags:** question\
**Created:** [September 28, 2017, 10:55am UTC](https://discourse.julialang.org/t/are-there-any-plans-to-support-higher-order-ranked-types-in-julia/6137 "2017-09-28T10:55:14Z")\
**Posts on this page:** 1\
**Showing post:** 19

<div class="post-metadata">

**Author:** ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)\
**Post date:** [September 30, 2017, 1:59pm UTC](https://discourse.julialang.org/t/are-there-any-plans-to-support-higher-order-ranked-types-in-julia/6137/19 "2017-09-30T13:59:49Z")

</div>

I think that your perspective comes from the ML family of programming languages. Informally, the agenda behind these can be summarized as “look, we can do (strong) static typing, without having having to write tons of type declarations (90% of the time)”. The constructs you are talking about make sense in that context.

Whereas in Julia, computations on the type system are not that interesting _per se_ for the programmer 90% of the time, and are usually left to the compiler. The purpose of parametric types in Julia is to achieve efficient code generation for concrete types. That’s kind of the whole exercise: think of Julia as an extremely powerful DSL developed for this purpose. You may find this post and the replies useful:

> [@Notes on the Julia compiler (JIT vs static)](https://discourse.julialang.org/t/notes-on-the-julia-compiler-jit-vs-static/4275/2):
>
> in short, it’s a reasonably good static compilier but a terrible JIT (or bascially it’s not a JIT)… By saying that its a static compiler, what I mean is that it does not use any runtimme information to produce optimized code. (Here static information is basically anything in the type domain whereas runtime information being anything in the value domain). The advantage of this approach is that if the code is well writen, the performance will be predictably good, the compile time will also be ve…

When I started using Julia, I wanted the type system to be able to express various things. For example, I was awaiting triangular dispatch very eagerly, as a “must have” feature. Now that we have it, I find that I am not using it as much as anticipated (this does not mean it is not essential when needed).

If you are expecting Julia to do things which are on the frontiers for type theory, you will probably be disappointed. OTOH, if you want to invest in learning a language where the focus is on writing fast generic code, this is probably the right place.

---

_[View the full topic](https://discourse.julialang.org/t/are-there-any-plans-to-support-higher-order-ranked-types-in-julia/6137)._
