# Flatten a tuple of Operations/Operation arrays

**URL:** <https://discourse.julialang.org/t/flatten-a-tuple-of-operations-operation-arrays/58906>\
**Category:** General Usage\
**Created:** [April 9, 2021, 8:06am UTC](https://discourse.julialang.org/t/flatten-a-tuple-of-operations-operation-arrays/58906 "2021-04-09T08:06:36Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![cvanaret](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/cvanaret/32/11594_2.png) [@cvanaret](https://discourse.julialang.org/u/cvanaret)\
**Post date:** [April 9, 2021, 8:06am UTC](https://discourse.julialang.org/t/flatten-a-tuple-of-operations-operation-arrays/58906/1 "2021-04-09T08:06:36Z")

</div>

Hi,  
I’m using the @variables macro of the ModelingToolkit module:

```julia
(edit) n = 2
vars = @variables x y z[1:n]

```

which produces (x, y, Operation[z₁, z₂]).

I’m now using this tuple as parameter in the constructor of Contractor (IntervalConstraintProgramming.jl) that expects a tuple of Operations.

**How can I flatten (x, y, Operation[z₁, z₂]) to (x, y, z₁, z₂)?**  
I’ve tried vcat, reduce(vcat), collect(flatten), without success.  
Thanks,

Charlie

---

<div class="post-metadata">

**Author:** ![FPGro](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/fpgro/32/20822_2.png) [@FPGro](https://discourse.julialang.org/u/FPGro)\
**Post date:** [April 9, 2021, 8:26am UTC](https://discourse.julialang.org/t/flatten-a-tuple-of-operations-operation-arrays/58906/2 "2021-04-09T08:26:02Z")

</div>

Your code yields

```julia
julia> vars = @variables x y z[1:n]
(x, y, Num[z₁, z₂, z₃, z₄, z₅, z₆, z₇, z₈, z₉, z₁₀, z₁₁, z₁₂, z₁₃, z₁₄, z₁₅, z₁₆, z₁₇, z₁₈, z₁₉, z₂₀])

```

Did you mean `n=2`?

```julia
julia> n=2
2

julia> vars = @variables x y z[1:n]
(x, y, Num[z₁, z₂])

```

Also `vcat` works for me:

```julia
julia> vcat(vars...)
4-element Vector{Num}:
  x
  y
 z₁
 z₂

```

If everything fails, do it manually 😃

````julia
julia> x, y, ops = vars
(x, y, Num[z₁, z₂])

julia> newtuple = (x, y, ops...)
(x, y, z₁, z₂)
```
````

---

<div class="post-metadata">

**Author:** ![cvanaret](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/cvanaret/32/11594_2.png) [@cvanaret](https://discourse.julialang.org/u/cvanaret)\
**Post date:** [April 9, 2021, 8:32am UTC](https://discourse.julialang.org/t/flatten-a-tuple-of-operations-operation-arrays/58906/3 "2021-04-09T08:32:44Z")

</div>

Oh yeah my bad, I actually tried n = 2 but wanted to show that z can be large.  
It works perfectly, thanks 🙂 Hadn’t tried with the splat.
