# Broadcasting and single characters

**URL:** <https://discourse.julialang.org/t/broadcasting-and-single-characters/16836>\
**Category:** General Usage\
**Created:** [October 26, 2018, 7:47pm UTC](https://discourse.julialang.org/t/broadcasting-and-single-characters/16836 "2018-10-26T19:47:02Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![Alexander-Barth](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/alexander-barth/32/3692_2.png) [@Alexander-Barth](https://discourse.julialang.org/u/Alexander-Barth)\
**Post date:** [October 26, 2018, 7:47pm UTC](https://discourse.julialang.org/t/broadcasting-and-single-characters/16836/1 "2018-10-26T19:47:02Z")

</div>

I just came across this surprising (to me) behaviour, that a single character is not considered as a scalar:

```julia
julia> myfun(a) = a
myfun (generic function with 1 method)

julia> myfun.(1)
1

julia> myfun.('a')
1-element Array{Char,1}:
 'a'

```

I would had expected that the last line just return a single ‘a’ and not [‘a’]. Is there a particular reason for the current behaviour ? I use julia 1.0.1.

---

<div class="post-metadata">

**Author:** ![bkamins](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bkamins/32/208538_2.png) [@bkamins](https://discourse.julialang.org/u/bkamins)\
**Post date:** [October 26, 2018, 8:39pm UTC](https://discourse.julialang.org/t/broadcasting-and-single-characters/16836/2 "2018-10-26T20:39:08Z")

</div>

I would say that the following method is missing for `Char`:

```julia
Base.IteratorSize(::Type{Char}) = Base.HasShape{0}()

```

With this definition all works OK (and `Char` is treated as `0`-dimensional array).

---

<div class="post-metadata">

**Author:** ![Sukera](https://avatars.discourse-cdn.com/v4/letter/s/ce7236/32.png) [@Sukera](https://discourse.julialang.org/u/Sukera)\
**Post date:** [October 26, 2018, 8:41pm UTC](https://discourse.julialang.org/t/broadcasting-and-single-characters/16836/3 "2018-10-26T20:41:31Z")

</div>

What about iterating over a single characters codepoints?

---

<div class="post-metadata">

**Author:** ![bkamins](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bkamins/32/208538_2.png) [@bkamins](https://discourse.julialang.org/u/bkamins)\
**Post date:** [October 26, 2018, 8:44pm UTC](https://discourse.julialang.org/t/broadcasting-and-single-characters/16836/4 "2018-10-26T20:44:23Z")

</div>

`length` of `Char` is defined as `1`.

AFAIK to do this you currently have to write:

```julia
julia> codeunits(string('∀'))
3-element Base.CodeUnits{UInt8,String}:
 0xe2
 0x88
 0x80

```

or directly access bytes via:

```julia
julia> reinterpret(UInt32, '∀')
0xe2888000

```

---

<div class="post-metadata">

**Author:** ![Sukera](https://avatars.discourse-cdn.com/v4/letter/s/ce7236/32.png) [@Sukera](https://discourse.julialang.org/u/Sukera)\
**Post date:** [October 26, 2018, 8:44pm UTC](https://discourse.julialang.org/t/broadcasting-and-single-characters/16836/5 "2018-10-26T20:44:37Z")

</div>

Ah, yes of course!

---

<div class="post-metadata">

**Author:** ![oliver](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oliver/32/19264_2.png) [@oliver](https://discourse.julialang.org/u/oliver)\
**Post date:** [October 27, 2018, 12:44am UTC](https://discourse.julialang.org/t/broadcasting-and-single-characters/16836/6 "2018-10-27T00:44:40Z")

</div>

What is the difference between `myfun.('a')` and `myfun('a')`?

---

<div class="post-metadata">

**Author:** ![Alexander-Barth](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/alexander-barth/32/3692_2.png) [@Alexander-Barth](https://discourse.julialang.org/u/Alexander-Barth)\
**Post date:** [October 28, 2018, 9:33pm UTC](https://discourse.julialang.org/t/broadcasting-and-single-characters/16836/7 "2018-10-28T21:33:23Z")

</div>

`myfun('a')` just returns `'a`’ as expected.

---

<div class="post-metadata">

**Author:** ![Alexander-Barth](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/alexander-barth/32/3692_2.png) [@Alexander-Barth](https://discourse.julialang.org/u/Alexander-Barth)\
**Post date:** [October 28, 2018, 9:39pm UTC](https://discourse.julialang.org/t/broadcasting-and-single-characters/16836/8 "2018-10-28T21:39:51Z")

</div>

Thank you for your insights. Would you consider it as a bug? I am considering to file an issue.

---

<div class="post-metadata">

**Author:** ![bkamins](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bkamins/32/208538_2.png) [@bkamins](https://discourse.julialang.org/u/bkamins)\
**Post date:** [October 28, 2018, 9:49pm UTC](https://discourse.julialang.org/t/broadcasting-and-single-characters/16836/9 "2018-10-28T21:49:05Z")

</div>

See [https://github.com/JuliaLang/julia/pull/29819](https://github.com/JuliaLang/julia/pull/29819)

---

<div class="post-metadata">

**Author:** ![Alexander-Barth](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/alexander-barth/32/3692_2.png) [@Alexander-Barth](https://discourse.julialang.org/u/Alexander-Barth)\
**Post date:** [October 29, 2018, 7:00am UTC](https://discourse.julialang.org/t/broadcasting-and-single-characters/16836/10 "2018-10-29T07:00:57Z")

</div>

Perfect! Thanks, Bogumił!
