# Why? isa(\[(x,1),(y,1)\], Array{Tuple{Stuff,Number},1}) = false

**URL:** <https://discourse.julialang.org/t/why-isa-x-1-y-1-array-tuple-stuff-number-1-false/55777>\
**Category:** General Usage\
**Created:** [February 22, 2021, 1:49pm UTC](https://discourse.julialang.org/t/why-isa-x-1-y-1-array-tuple-stuff-number-1-false/55777 "2021-02-22T13:49:54Z")\
**Posts on this page:** 1\
**Showing post:** 5

<div class="post-metadata">

**Author:** ![Shuhua](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/shuhua/32/27618_2.png) [@Shuhua](https://discourse.julialang.org/u/Shuhua)\
**Post date:** [February 22, 2021, 4:00pm UTC](https://discourse.julialang.org/t/why-isa-x-1-y-1-array-tuple-stuff-number-1-false/55777/5 "2021-02-22T16:00:12Z")

</div>

> [@goretkin](#):
>
> Related: [Why are tuples covariant?](https://discourse.julialang.org/t/why-are-tuples-covariant/45005)
> 
> Consider
> 
> ```julia
> test4 = isa([(x,1),(y,1)], Array{<:Tuple{Stuff, Number},1})
> 
> ```

Further explanation for a newbie: the key reason is that `Array` is not covariant (or more generally, " Julia’s type parameters are _invariant_"; see the link above).

A more concise example to show the invariance:

```julia
julia> 1 isa Real
true

julia> [1]
1-element Vector{Int64}:
 1

julia> [1] isa Vector{Real}
false

julia> Int64 <: Real
true

julia> [1] isa Vector{<:Real} # <: means any subtype of Real
true

```

---

_[View the full topic](https://discourse.julialang.org/t/why-isa-x-1-y-1-array-tuple-stuff-number-1-false/55777)._
