# Why are tuples covariant?

**URL:** https://discourse.julialang.org/t/why-are-tuples-covariant/45005
**Category:** Internals & Design
**Tags:** type, tuple, parametric-types
**Created:** [August 15, 2020, 5:45pm UTC](https://discourse.julialang.org/t/why-are-tuples-covariant/45005 "2020-08-15T17:45:58Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### Author: ![OliverEvans96](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oliverevans96/32/4177_2.png) [@OliverEvans96](https://discourse.julialang.org/u/OliverEvans96)
#### Post date: [August 15, 2020, 5:45pm UTC](https://discourse.julialang.org/t/why-are-tuples-covariant/45005/1 "2020-08-15T17:45:58Z")

</div>

The manual section on [Parametric Types](https://docs.julialang.org/en/v1/manual/types/#Parametric-Types-1) says that

> Julia’s type parameters are _invariant_

but the section on [Tuple Types](https://docs.julialang.org/en/v1/manual/types/#Tuple-Types-1) says

> Tuple types are _covariant_ in their parameters

I’m just curious about the reason behind this design choice. It seems a bit confusing to me as a Julia novice, but I’m sure somebody much more knowledgeable than I had a good reason to design it this way.

Thanks,  
Oliver

---

<div class="post-metadata">

### Author: ![Oscar\_Smith](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oscar_smith/32/25343_2.png) [@Oscar\_Smith](https://discourse.julialang.org/u/Oscar_Smith)
#### Post date: [August 15, 2020, 6:07pm UTC](https://discourse.julialang.org/t/why-are-tuples-covariant/45005/2 "2020-08-15T18:07:16Z")

</div>

The reason here is mainly historical. There actually is a proposal to change it for Julia 2.0 [https://github.com/JuliaLang/julia/issues/24614](https://github.com/JuliaLang/julia/issues/24614)

---

<div class="post-metadata">

### Author: ![Raf](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/raf/32/3383_2.png) [@Raf](https://discourse.julialang.org/u/Raf)
#### Post date: [August 15, 2020, 6:17pm UTC](https://discourse.julialang.org/t/why-are-tuples-covariant/45005/3 "2020-08-15T18:17:14Z")

</div>

Also dispatching on Tuples is useful and it’s easier with covariance, especially `Vararg`.
