# Does union cause type instability？

**URL:** https://discourse.julialang.org/t/does-union-cause-type-instability/91173
**Category:** General Usage
**Tags:** question
**Created:** [December 3, 2022, 11:43am UTC](https://discourse.julialang.org/t/does-union-cause-type-instability/91173 "2022-12-03T11:43:37Z")
**Posts on this page:** 6
**Page:** 1

<div class="post-metadata">

### Author: ![zhangchunyong](https://avatars.discourse-cdn.com/v4/letter/z/d9b06d/32.png) [@zhangchunyong](https://discourse.julialang.org/u/zhangchunyong)
#### Post date: [December 3, 2022, 11:43am UTC](https://discourse.julialang.org/t/does-union-cause-type-instability/91173/1 "2022-12-03T11:43:38Z")

</div>

```julia
a=Vector{Union{Missing, Int64}}()
push!(a,1)
push!(a,missing)

```

push! to the union vector.Can this cause type instability?

---

<div class="post-metadata">

### Author: ![jd-foster](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jd-foster/32/35824_2.png) [@jd-foster](https://discourse.julialang.org/u/jd-foster)
#### Post date: [December 3, 2022, 11:53am UTC](https://discourse.julialang.org/t/does-union-cause-type-instability/91173/2 "2022-12-03T11:53:57Z")

</div>

Type stabilty is generally a property of functions, not collections.

---

<div class="post-metadata">

### Author: ![zhangchunyong](https://avatars.discourse-cdn.com/v4/letter/z/d9b06d/32.png) [@zhangchunyong](https://discourse.julialang.org/u/zhangchunyong)
#### Post date: [December 3, 2022, 12:03pm UTC](https://discourse.julialang.org/t/does-union-cause-type-instability/91173/4 "2022-12-03T12:03:37Z")

</div>

> [@jd-foster](#):
>
> ype stabilty is generally a property of functions, not collections.

Thanks.If I wrote a function.like the following.

```julia
function f(x)#x is a vector
    a=Vector{Union{Missing, Int64}}()
    for i in x 
        b=m(i)#for example ,function m can generate Type Int64 or missing.
        push!(a,b)
    end
    return a
end

```

Does the function cause type instabilty?

---

<div class="post-metadata">

### Author: ![Tbl](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tbl/32/5984_2.png) [@Tbl](https://discourse.julialang.org/u/Tbl)
#### Post date: [December 3, 2022, 12:15pm UTC](https://discourse.julialang.org/t/does-union-cause-type-instability/91173/5 "2022-12-03T12:15:14Z")

</div>

In this code everything depends on the function `m`. Function `f` itself causes no problems.

---

<div class="post-metadata">

### Author: ![zhangchunyong](https://avatars.discourse-cdn.com/v4/letter/z/d9b06d/32.png) [@zhangchunyong](https://discourse.julialang.org/u/zhangchunyong)
#### Post date: [December 3, 2022, 12:19pm UTC](https://discourse.julialang.org/t/does-union-cause-type-instability/91173/6 "2022-12-03T12:19:37Z")

</div>

But if the function m return Int64 or missing,will m cause type instabilty?

---

<div class="post-metadata">

### Author: ![Tbl](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tbl/32/5984_2.png) [@Tbl](https://discourse.julialang.org/u/Tbl)
#### Post date: [December 3, 2022, 12:23pm UTC](https://discourse.julialang.org/t/does-union-cause-type-instability/91173/7 "2022-12-03T12:23:01Z")

</div>

No. Julia implements `Union` by storing a separate variable which tells which type the value has. The code then has branches, but no general type instability. You can check code stability yourself by using macro `@code_warntype` like `@code_warntype f([1,2,3])`.
