The other answers did not fully clarify the effect of quote. Please see this code:
(ns tst.demo.core (:use tupelo.test) (:require [tupelo.core :as t] )) ; Note: ; (def data {:foo "bar" :biz "baf" :content ("Happy Happy Joy Joy")}) ; => exception (def data-1 '{:foo "bar" :biz "baf" :content ("Happy Happy Joy Joy")}) (def data-2 {:foo "bar" :biz "baf" :content '("Happy Happy Joy Joy")}) (def data-3 (quote {:foo "bar" :biz "baf" :content ("Happy Happy Joy Joy")})) (dotest (is= data-1 data-2 data-3) (is= "Happy Happy Joy Joy" (first (:content data-1))) (is= "Happy Happy Joy Joy" (first (:content data-2))) (is= "Happy Happy Joy Joy" (first (:content data-3))))
So, data-1 shows we can quote the entire expression at the outer level, and data-2 shows we can also quote each list expression (stuff in parens) to suppress the "function call" interpretation of a "list" type in Clojure.
data-3 shows that the single-quote char ' is just short for the special form (quote ...) in Clojure.
Once you get the data literal form right, we see that data-1 and data-2 and data-3 actually result in identical data structures after being processed by the reader.
The last 3 tests show the proper syntax for extracting the string of interest from any of the 3 data structures.
P.S. The testing stuff dotest and is= is from the Tupelo library.