Unquote-splicing (`~@`) inserts the elements of an evaluated collection into a surrounding collection inside syntax-quote. It is useful when a macro must place several forms into generated code. Unlike unquote (`~`), it does not insert the collection as one element. section 4.1
Insert elements, not a collection
`[1 2 ~[3 4] ~@[3 (+ 1 2)]] ;; [1 2 [3 4] 3 3] Unquote keeps `[3 4]` intact; unquote-splicing inserts the two evaluated elements. section 4.1
Splicing needs a surrounding syntax-quoted collection and a value that can supply elements. Using `~@` outside syntax-quote, splicing a keyword, or placing it without a surrounding collection produces errors. In a macro body, `~@body` places supplied forms into the generated expression. section 4.1
