Unquote (`~`) evaluates an expression inside syntax-quote and inserts its result into the resulting form. It makes syntax-quote useful for building macro expansions from a template. section 4.1
`[1 2 (+ 1 2) ~(+ 1 2)] ;; [1 2 (clojure.core/+ 1 2) 3] ; #1
Compare the two additions: the one without `~` remains a form, while `~(+ 1 2)` becomes `3`. section 4.1
One value or several elements
`~[3 4]` inserts the vector as one value. In a surrounding syntax-quoted collection, `~@[3 (+ 1 2)]` inserts its elements separately; the result is `[1 2 [3 4] 3 3]`. section 4.1
Unquoting a quoted symbol with `~'foo` leaves it unqualified. Avoid that pattern unless the unqualified symbol is intentional: it bypasses syntax-quote’s protection against accidental symbol capture. section 4.1
