# Juliaism for vector within vector for arithmetic operations?

**URL:** <https://discourse.julialang.org/t/juliaism-for-vector-within-vector-for-arithmetic-operations/10915>\
**Category:** General Usage\
**Created:** [May 15, 2018, 4:55pm UTC](https://discourse.julialang.org/t/juliaism-for-vector-within-vector-for-arithmetic-operations/10915 "2018-05-15T16:55:09Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![iwelch](https://avatars.discourse-cdn.com/v4/letter/i/8c91f0/32.png) [@iwelch](https://discourse.julialang.org/u/iwelch)\
**Post date:** [May 15, 2018, 4:55pm UTC](https://discourse.julialang.org/t/juliaism-for-vector-within-vector-for-arithmetic-operations/10915/1 "2018-05-15T16:55:09Z")

</div>

I would like to create one array, unnested, calculated from various arithmetic vector operations. this is easier to illustrate than to describe.

```julia
julia> 10 + [-1, +1]*2 ## ok
2-element Array{Int64,1}:
  8
 12

julia> [10 + [-1,+1]*2, 20 + [-3,+5]^1 ] ## of course, not
2-element Array{Array{Int64,1},1}:
 [8, 12]
 [17, 25]

julia> [10 + [i:-i]*2 for i=1:5 ] ## or this
5-element Array{Array{Int64,1},1}:
 [12, 8]
 [14, 6]
 [16, 4]
 [18, 2]
 [20, 0]

```

I could use vcat without comprehensions. I could also use ` collect(Base.Iterators.flatten(...))`.

both are ok, but maybe I am just missing a simple Julia-ism here. am I?

---

<div class="post-metadata">

**Author:** ![kristoffer.carlsson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kristoffer.carlsson/32/22_2.png) [@kristoffer.carlsson](https://discourse.julialang.org/u/kristoffer.carlsson)\
**Post date:** [May 15, 2018, 5:00pm UTC](https://discourse.julialang.org/t/juliaism-for-vector-within-vector-for-arithmetic-operations/10915/2 "2018-05-15T17:00:16Z")

</div>

What result do you want? A matrix?

---

<div class="post-metadata">

**Author:** ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)\
**Post date:** [May 15, 2018, 5:08pm UTC](https://discourse.julialang.org/t/juliaism-for-vector-within-vector-for-arithmetic-operations/10915/3 "2018-05-15T17:08:10Z")

</div>

We need recursive broadcasting. This has struck me many times in DiffEq development.

---

<div class="post-metadata">

**Author:** ![iwelch](https://avatars.discourse-cdn.com/v4/letter/i/8c91f0/32.png) [@iwelch](https://discourse.julialang.org/u/iwelch)\
**Post date:** [May 15, 2018, 5:17pm UTC](https://discourse.julialang.org/t/juliaism-for-vector-within-vector-for-arithmetic-operations/10915/4 "2018-05-15T17:17:27Z")

</div>

single vector.

---

<div class="post-metadata">

**Author:** ![stevengj](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stevengj/32/71_2.png) [@stevengj](https://discourse.julialang.org/u/stevengj)\
**Post date:** [May 15, 2018, 6:00pm UTC](https://discourse.julialang.org/t/juliaism-for-vector-within-vector-for-arithmetic-operations/10915/5 "2018-05-15T18:00:09Z")

</div>

> [@ChrisRackauckas](#):
>
> We need recursive broadcasting.

Maybe, but it doesn’t sound like this is what @iwelch is asking for — it sounds like he wants a “flattened broadcast”.

If you have a small number of broadcasts that are explicitly enumerated, of course, you can do `;` or call `vcat`

```julia
julia> @. [10 + [-1,+1]*2; 20 + [-3,+5]^1 ]
4-element Array{Int64,1}:
  8
 12
 17
 25

```

For comprehensions, you could use splatting, e.g.

```julia
vcat(@. (10 + (-i:i)*2 for i=1:5)...)

```

or you could `collect` the `flatten` iterator.

---

<div class="post-metadata">

**Author:** ![iwelch](https://avatars.discourse-cdn.com/v4/letter/i/8c91f0/32.png) [@iwelch](https://discourse.julialang.org/u/iwelch)\
**Post date:** [May 15, 2018, 9:58pm UTC](https://discourse.julialang.org/t/juliaism-for-vector-within-vector-for-arithmetic-operations/10915/6 "2018-05-15T21:58:16Z")

</div>

very nice. thank you steven. yes, it is not perfect, but it probably fits the bill in 9 out of 10 times.
