Here is an example I took from http://docs.julialang.org/en/stable/manual/metaprogramming/#interpolation, which confuses me.

My questions: 1. What does `$:((1,2,3))`

mean? Can we think `$`

and `:`

as opposite operators which cancel each other, so that `$:((1,2,3))`

is exactly same as the original tuple `(1,2,3)`

? 2. Why `ex1 == ex2`

, but not `ex1 === ex2`

? Thanks!!

```
julia> ex1 = :(a in $:((1,2,3)) )
:(a in (1,2,3))
julia> ex2 = :(a in (1,2,3) )
:(a in (1,2,3))
julia> ex1 == ex2
true
julia> ex1 === ex2
false
```