# \`broadcast\` behaves differently for tuples and arrays

**URL:** https://discourse.julialang.org/t/broadcast-behaves-differently-for-tuples-and-arrays/7167
**Category:** General Usage
**Tags:** question
**Created:** [November 19, 2017, 10:36am UTC](https://discourse.julialang.org/t/broadcast-behaves-differently-for-tuples-and-arrays/7167 "2017-11-19T10:36:49Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![ettersi](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ettersi/32/6829_2.png) [@ettersi](https://discourse.julialang.org/u/ettersi)
#### Post date: [November 19, 2017, 10:36am UTC](https://discourse.julialang.org/t/broadcast-behaves-differently-for-tuples-and-arrays/7167/1 "2017-11-19T10:36:49Z")

</div>

I was surprised to find that `broadcast` behaves differently for tuples and arrays:

```julia
julia> ((x,y) -> @show x,y).((:a,),[1,2]);
(x, y) = (:a, 1)
(x, y) = (:a, 2)

julia> ((x,y) -> @show x,y).((:a,),(1,2));
(x, y) = (:a, 1)

```

Is this difference intended? It somewhat complicates things [here](https://stackoverflow.com/questions/47346301/avoid-broadcasting-on-an-argument-in-julia).

---

<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: [November 19, 2017, 11:37am UTC](https://discourse.julialang.org/t/broadcast-behaves-differently-for-tuples-and-arrays/7167/2 "2017-11-19T11:37:59Z")

</div>

On 0.7, these work the same.

---

<div class="post-metadata">

### Author: ![Liso](https://avatars.discourse-cdn.com/v4/letter/l/898d66/32.png) [@Liso](https://discourse.julialang.org/u/Liso)
#### Post date: [November 19, 2017, 1:59pm UTC](https://discourse.julialang.org/t/broadcast-behaves-differently-for-tuples-and-arrays/7167/3 "2017-11-19T13:59:21Z")

</div>

and:

```julia
((x,y) -> @show x,y).([:a,],(1,2));
(x, y) = (:a, 1)
(x, y) = (:a, 2)

```

or if we change order:

```julia
((x,y) -> @show x,y).((1,2),[:a]);
(x, y) = (1, :a)
(x, y) = (2, :a)

((x,y) -> @show x,y).((1,2),(:a,));
(x, y) = (1, :a)
ERROR: BoundsError: attempt to access (:a,)
  at index [2]
Stacktrace:
 [1] (::Base.Broadcast.##3#4{##98#99,Tuple{Tuple{Int64,Int64},Tuple{Symbol}}})(::Int64) at ./broadcast.jl:339
 [2] broadcast(::Function, ::Tuple{Int64,Int64}, ::Tuple{Symbol}) at ./broadcast.jl:434

```

---

<div class="post-metadata">

### Author: ![ettersi](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ettersi/32/6829_2.png) [@ettersi](https://discourse.julialang.org/u/ettersi)
#### Post date: [November 20, 2017, 2:14pm UTC](https://discourse.julialang.org/t/broadcast-behaves-differently-for-tuples-and-arrays/7167/4 "2017-11-20T14:14:35Z")

</div>

Just tried it in julia 0.7 as available in Julia Box, and I still get the same result as in 0.6.

---

<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: [November 20, 2017, 2:15pm UTC](https://discourse.julialang.org/t/broadcast-behaves-differently-for-tuples-and-arrays/7167/5 "2017-11-20T14:15:48Z")

</div>

```julia
julia> ((x,y) -> @show x,y).((:a,),[1,2]);
(x, y) = (:a, 1)
(x, y) = (:a, 2)

julia> ((x,y) -> @show x,y).((:a,),(1,2));
(x, y) = (:a, 1)
(x, y) = (:a, 2)

julia> versioninfo()
Julia Version 0.7.0-DEV.2523
Commit c317f90f0d* (2017-11-20 12:22 UTC)

```
