# Redundant \`:($(\` in expression printing

**URL:** https://discourse.julialang.org/t/redundant-in-expression-printing/22278
**Category:** New to Julia
**Created:** [March 24, 2019, 5:06pm UTC](https://discourse.julialang.org/t/redundant-in-expression-printing/22278 "2019-03-24T17:06:42Z")
**Posts on this page:** 6
**Page:** 1

<div class="post-metadata">

### Author: ![Kiuhnm\_Mnhuik](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kiuhnm_mnhuik/32/7572_2.png) [@Kiuhnm\_Mnhuik](https://discourse.julialang.org/u/Kiuhnm_Mnhuik)
#### Post date: [March 24, 2019, 5:06pm UTC](https://discourse.julialang.org/t/redundant-in-expression-printing/22278/1 "2019-03-24T17:06:42Z")

</div>

Why does Julia add extra `:($`? For instance:

```julia
julia> :(:(:(1+2)))
:($(Expr(:quote, :($(Expr(:quote, :(1 + 2)))))))

```

---

<div class="post-metadata">

### Author: ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)
#### Post date: [March 25, 2019, 8:48am UTC](https://discourse.julialang.org/t/redundant-in-expression-printing/22278/2 "2019-03-25T08:48:57Z")

</div>

The above is technically correct, since this is the expression that would evaluate to the original one — the `$(...)` syntax interpolates its result, which is constructed using `Expr`.

Perhaps a more compact way of printing is possible, but I kind of like this one as it shows the full structure.

---

<div class="post-metadata">

### Author: ![Kiuhnm\_Mnhuik](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kiuhnm_mnhuik/32/7572_2.png) [@Kiuhnm\_Mnhuik](https://discourse.julialang.org/u/Kiuhnm_Mnhuik)
#### Post date: [March 25, 2019, 1:10pm UTC](https://discourse.julialang.org/t/redundant-in-expression-printing/22278/3 "2019-03-25T13:10:35Z")

</div>

What do you mean by “full structure”?  
I don’t see anything missing from `Expr(:quote, Expr(:quote, :(1 + 2)))`.

---

<div class="post-metadata">

### Author: ![mbauman](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mbauman/32/31082_2.png) [@mbauman](https://discourse.julialang.org/u/mbauman)
#### Post date: [March 25, 2019, 1:12pm UTC](https://discourse.julialang.org/t/redundant-in-expression-printing/22278/4 "2019-03-25T13:12:39Z")

</div>

You might like the printing of `Meta.show_sexpr` a bit better:

```julia
julia> Meta.show_sexpr( :(:(:(1+2))))
(:quote, (:quote, (:call, :+, 1, 2)))

```

---

<div class="post-metadata">

### Author: ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)
#### Post date: [March 25, 2019, 1:27pm UTC](https://discourse.julialang.org/t/redundant-in-expression-printing/22278/5 "2019-03-25T13:27:34Z")

</div>

I think that generally `show_unquoted_quote_expr` tries to print an expression that “looks like” a canonical form. I agree that here it could be improved here for the `Expr` blocks. Perhaps open an issue?

---

<div class="post-metadata">

### Author: ![Kiuhnm\_Mnhuik](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kiuhnm_mnhuik/32/7572_2.png) [@Kiuhnm\_Mnhuik](https://discourse.julialang.org/u/Kiuhnm_Mnhuik)
#### Post date: [March 25, 2019, 3:23pm UTC](https://discourse.julialang.org/t/redundant-in-expression-printing/22278/6 "2019-03-25T15:23:17Z")

</div>

> <https://github.com/JuliaLang/julia/issues/31472>
>
> Current behavior:
> \`\`\`julia
> julia\> :(:(:(1+2)))
> :($(Expr(:quote, :($(Expr(:quo…te, :(1 + 2)))))))
> \`\`\`
> 
> Suggested behavior:
> \`\`\`julia
> julia\> :(:(:(1+2)))
> Expr(:quote, Expr(:quote, :(1 + 2)))
> \`\`\`
