AL
Size: a a a
AL
AB
AL
(let [name 1])
E
(defn bind-let [a] (let [n (symbol a)] (def n 1)))
T
(defn bind-let [a] (let [n (symbol a)] (def n 1)))
DS
T
(defn bind-let [a] (let [n (symbol a)] (def n 1)))
DS
T
(let [name 'a] (def name 1))
?`(def ~name 1)
DS
T
DS
T
(let [name 'a] (def name 1))
?(defmacro persist-scope
"Takes local scope vars and defines them in the global scope. Useful for RDD"
[]
`(do ~@(map (fn [v] `(def ~v ~v))
(keys (cond-> &env (contains? &env :locals) :locals)))))
Он берет весь локальный скоуп и делает его глобальным через (def name name)
DS
(let [name 'a]
(eval `(def ~name 1)))
DS
(let [name 'a]
(intern *ns* name 1))
E
AB
DS
def
из функцииDS
def
в исходниках компилятора, если действительно хочется понять как оно работает