# Better error messages: Invalid Comprehension syntax

**URL:** <https://discourse.julialang.org/t/better-error-messages-invalid-comprehension-syntax/84892>\
**Category:** General Usage\
**Created:** [July 27, 2022, 8:34pm UTC](https://discourse.julialang.org/t/better-error-messages-invalid-comprehension-syntax/84892 "2022-07-27T20:34:08Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Albert\_Zevelev](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/albert_zevelev/32/11844_2.png) [@Albert\_Zevelev](https://discourse.julialang.org/u/Albert_Zevelev)\
**Post date:** [July 27, 2022, 8:34pm UTC](https://discourse.julialang.org/t/better-error-messages-invalid-comprehension-syntax/84892/1 "2022-07-27T20:34:08Z")

</div>

Consider this syntax error:

```julia
julia> S1 = [(.01 : .1 : 1.0);];

julia> S2 = [(.01 : .1 : 1.0);];

julia> [s1 +s2 for s1 in S1, s2 in S2]
ERROR: syntax: invalid comprehension syntax
Stacktrace:
 [1] top-level scope
   @ none:1

julia> [s1 + s2 for s1 in S1, s2 in S2]
10×10 Matrix{Float64}:
 0.02 0.12 0.22 0.32 0.42 0.52 0.62 0.72 0.82 0.92
 0.12 0.22 0.32 0.42 0.52 0.62 0.72 0.82 0.92 1.02
 0.22 0.32 0.42 0.52 0.62 0.72 0.82 0.92 1.02 1.12
 ⋮ ⋮
 0.72 0.82 0.92 1.02 1.12 1.22 1.32 1.42 1.52 1.62
 0.82 0.92 1.02 1.12 1.22 1.32 1.42 1.52 1.62 1.72
 0.92 1.02 1.12 1.22 1.32 1.42 1.52 1.62 1.72 1.82

```

It turns out adding a space between `+` and `s2` resolves the error.  
Is there a way for Julia to guide the user to add a space between `+` and a variable etc?

PS: I’ve made this error a bunch of times…

---

<div class="post-metadata">

**Author:** ![oheil](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oheil/32/220745_2.png) [@oheil](https://discourse.julialang.org/u/oheil)\
**Post date:** [July 27, 2022, 8:42pm UTC](https://discourse.julialang.org/t/better-error-messages-invalid-comprehension-syntax/84892/2 "2022-07-27T20:42:17Z")

</div>

It shouldn’t be an error. Seems to be a parsing bug.

---

<div class="post-metadata">

**Author:** ![Albert\_Zevelev](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/albert_zevelev/32/11844_2.png) [@Albert\_Zevelev](https://discourse.julialang.org/u/Albert_Zevelev)\
**Post date:** [July 27, 2022, 9:58pm UTC](https://discourse.julialang.org/t/better-error-messages-invalid-comprehension-syntax/84892/3 "2022-07-27T21:58:15Z")

</div>

Can someone guide me as to where in the Julia code this can be addressed?

---

<div class="post-metadata">

**Author:** ![greatpet](https://avatars.discourse-cdn.com/v4/letter/g/e495f1/32.png) [@greatpet](https://discourse.julialang.org/u/greatpet)\
**Post date:** [July 27, 2022, 10:14pm UTC](https://discourse.julialang.org/t/better-error-messages-invalid-comprehension-syntax/84892/4 "2022-07-27T22:14:13Z")

</div>

> [@Albert\_Zevelev](#):
>
> `[s1 + s2 for s1 in S1, s2 in S2]`

Another valid form is

`[s1+s2 for s1 in S1, s2 in S2]`

But `s1 +s2` breaks the parser, presumably because it looks like two expressions separated by a space. This is especially an issue since square brackets are also used for arrays, and the syntax for arrays is very space-sensitive.
