# Type-stable zip of tuple

**URL:** <https://discourse.julialang.org/t/type-stable-zip-of-tuple/30105>\
**Category:** General Usage\
**Tags:** question\
**Created:** [October 20, 2019, 11:40am UTC](https://discourse.julialang.org/t/type-stable-zip-of-tuple/30105 "2019-10-20T11:40:38Z")\
**Posts on this page:** 4\
**Page:** 1

<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:** [October 20, 2019, 11:40am UTC](https://discourse.julialang.org/t/type-stable-zip-of-tuple/30105/1 "2019-10-20T11:40:38Z")

</div>

I have trouble getting this to infer (on 1.3; but the same happens on 1.2):

```julia
function zipped_pairs_product(pairs)
    itrs = map(pair -> zip(pair...), pairs)
    vec(collect(Iterators.product(itrs...)))
end

pairs = (1:5 => 1:5, 2:3 => 2:3)

using Test; @inferred zipped_pairs_product(pairs) # nope

```

---

<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:** [October 20, 2019, 11:44am UTC](https://discourse.julialang.org/t/type-stable-zip-of-tuple/30105/2 "2019-10-20T11:44:51Z")

</div>

But this apparently infers (only change is “manually splatting” args to zip):

```julia
function zipped_pairs_product2(pairs)
    itrs = map(pair -> zip(pair[1], pair[2]), pairs)
    vec(collect(Iterators.product(itrs...)))
end

```

Is this a known issue?

---

<div class="post-metadata">

**Author:** ![mateuszbaran](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mateuszbaran/32/221842_2.png) [@mateuszbaran](https://discourse.julialang.org/u/mateuszbaran)\
**Post date:** [October 20, 2019, 11:59am UTC](https://discourse.julialang.org/t/type-stable-zip-of-tuple/30105/3 "2019-10-20T11:59:27Z")

</div>

I also had problems with type inference of tuple zipping, to the point where I’ve just written these generated functions [https://github.com/JuliaNLSolvers/Manifolds.jl/blob/0ac128450df3e2501764a27b7955362dbd9925c8/src/utils.jl#L74](https://github.com/JuliaNLSolvers/Manifolds.jl/blob/0ac128450df3e2501764a27b7955362dbd9925c8/src/utils.jl#L74) . It’s the only reliably inferrable way to zip them that I know.

---

<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:** [October 22, 2019, 2:53pm UTC](https://discourse.julialang.org/t/type-stable-zip-of-tuple/30105/4 "2019-10-22T14:53:41Z")

</div>

Opened an issue:

[https://github.com/JuliaLang/julia/issues/33634](https://github.com/JuliaLang/julia/issues/33634)
