store/[org.clojure/core.typed "0.2.82"] clj::clojure.core.typed.indirect-utils/make-indirection

Source

(defmacro make-indirection [& vs]
  `(do 
     ~@(map (fn [v]
              (let [atm (symbol (str v "-atom"))]
                (when-not (resolve v)
                  [`(def ~atm (atom nil))
                   `(def ~v (fn [& args#]
                              (let [i# (deref ~atm)]
                                (when-not i#
                                  (throw (ex-info (str "Indirection for " 
                                                       '~(symbol (str (ns-name *ns*)) (str v))
                                                       " not set")
                                                  {})))
                                (apply i# args#))))])))
            vs)))

Uses on crossclj