having built my own Lisp by learning Clojure I think Clojure does broke some ability of homoiconicity in small features.
Say I have `{:a 1}`, which is equivalent to `(hash-map :a 1)`, I take it as data and I can recreate the expression with the later form:
user=> (quote (hash-map :a 1))
(hash-map :a 1)
user=> (def a (quote (hash-map :a 1)))
#'user/a
user=> (list (nth a 0) (nth a 1) (nth a 2))
(hash-map :a 1)
but for `{:a 1}`, I got error since it's a bit different: user=> (def b (quote {:a 1}))
#'user/b
user=> (list (nth b 0) (nth b 1) (nth b 2))
Execution error (UnsupportedOperationException) at user/eval12 (REPL:1).
nth not supported on this type: PersistentArrayMap
user=> b
{:a 1}
now it's different, it's no longer homoiconic in this syntax. user=> (first b)
[:a 1]
I would rather not using this syntax in my own lisp and still using a prefixed version.