# Symbol Block vs Quote Node in Metaprogramming

**URL:** <https://discourse.julialang.org/t/symbol-block-vs-quote-node-in-metaprogramming/3984>\
**Category:** General Usage\
**Created:** [May 30, 2017, 5:14am UTC](https://discourse.julialang.org/t/symbol-block-vs-quote-node-in-metaprogramming/3984 "2017-05-30T05:14:47Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![mohamed82008](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mohamed82008/32/18171_2.png) [@mohamed82008](https://discourse.julialang.org/u/mohamed82008)\
**Post date:** [May 30, 2017, 5:14am UTC](https://discourse.julialang.org/t/symbol-block-vs-quote-node-in-metaprogramming/3984/1 "2017-05-30T05:14:47Z")

</div>

Could someone please explain the difference between a symbol block and quote node in an expression? Thank you.

---

<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 31, 2017, 6:20pm UTC](https://discourse.julialang.org/t/symbol-block-vs-quote-node-in-metaprogramming/3984/2 "2017-05-31T18:20:19Z")

</div>

Do you mean a `Symbol` node and a `QuoteNode` node in expression trees? I’m not sure what you mean by a “symbol block”.

---

<div class="post-metadata">

**Author:** ![mohamed82008](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mohamed82008/32/18171_2.png) [@mohamed82008](https://discourse.julialang.org/u/mohamed82008)\
**Post date:** [May 31, 2017, 7:46pm UTC](https://discourse.julialang.org/t/symbol-block-vs-quote-node-in-metaprogramming/3984/3 "2017-05-31T19:46:37Z")

</div>

I mean something like this. The head here is a symbol block. Also, is there any list of all possible `head` entries that I can read for sake of completeness? I think this part is not as well documented as other parts. Thanks.

```julia
julia> e = :(a = 2; b = 2)
quote
    a = 2
    b = 2
end

julia> dump(e)
Expr
  head: Symbol block
  args: Array{Any}((2,))
    1: Expr
      head: Symbol =
      args: Array{Any}((2,))
        1: Symbol a
        2: Int64 2
      typ: Any
    2: Expr
      head: Symbol =
      args: Array{Any}((2,))
        1: Symbol b
        2: Int64 2
      typ: Any
  typ: Any

```
