                       `(bind ~r (fn [~l] ~acc))))
                   `(do ~@body)))))
 
-(defn deps [expr syms]
+(defn- deps [expr syms]
   (cond
     (and (symbol? expr)
          (contains? syms expr))

    :else
    expr))

(defn dedupe-symbols*
  [sym->ap body]
  (letfn [(renamer [{:keys [body syms aps seen renames] :as summ} [s ap]]
           (let [ap' (rename ap renames)

                  sym->ap)]
      [(mapv vector (:syms summ) (:aps summ)) (:body summ)])))

(defn- dedupe-symbols
  [bindings body]
  (let [syms (map first bindings)
        aps (map second bindings)
        sym->ap (mapv vector syms aps)]
    (dedupe-symbols* sym->ap body)))

(defn- dependency-map
  [sym->ap]
  (let [syms (map first sym->ap)
        symset (set syms)]
