Symbol Block vs Quote Node in Metaprogramming


#1

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


#2

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


#3

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> 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