# Julia types

**URL:** <https://discourse.julialang.org/t/julia-types/62352>\
**Category:** New to Julia\
**Created:** [June 3, 2021, 7:34pm UTC](https://discourse.julialang.org/t/julia-types/62352 "2021-06-03T19:34:25Z")\
**Posts on this page:** 1\
**Showing post:** 5

<div class="post-metadata">

**Author:** ![ptoche](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ptoche/32/23554_2.png) [@ptoche](https://discourse.julialang.org/u/ptoche)\
**Post date:** [June 4, 2021, 4:29am UTC](https://discourse.julialang.org/t/julia-types/62352/5 "2021-06-04T04:29:26Z")

</div>

The whole history can be reconstructed from various discussions linked [here](https://discourse.julialang.org/t/anybody-else-find-the-new-where-syntax-less-than-satisfactory/4897/14). I haven’t read everything, but [this explanation](https://stackoverflow.com/questions/41931289/where-in-function-definitions-in-julia-0-6/41940710#41940710) is a good one-stop.

Let me quote an excerpt from [Stefan’s explanation](https://discourse.julialang.org/t/anybody-else-find-the-new-where-syntax-less-than-satisfactory/4897/14):

> In Julia 1.0, on the other hand, type parameters and constructors will be thoroughly consistent, following these general principles uniformly:
> 
> - The syntax used to define a method _always_ matches the syntax used to call it.
> - The `F{T}` syntax _always_ refers to the type `F` with parameter value `T` .
> - Type parameters are _always_ introduced by `where` clauses.
> 
> I think these principles make the syntax and semantics of parametric types and methods far more understandable and intuitive. Given these principles, semantics like what we now have seem inevitable. The only real question is syntax – and what syntax to use was one of the biggest bikesheds around this issue. I wasn’t initially thrilled with the postfix `where` syntax, but it’s grown on me and now it seems quite natural. The only really odd case, as you mention, is `f(...) where T = body` without any type bound, but I’ve found that even this case fairly quickly loses its unfamiliarity. Other keywords than `where` were discussed, including `forall` and `∀` . However, Julia’s “union all” types are _not_ universally quantified types (they’re actually closer to existentially quantified types), so both of these choices would have been actively at odds with existing type theory nomenclature. The `where` keyword was the most evocative choice proposed that didn’t clash with well-established terminology. Finally, having the `where` clause on the right just seemed to read much more naturally in the vast majority of usages.

---

_[View the full topic](https://discourse.julialang.org/t/julia-types/62352)._
