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

                :let [ds (set (deps ap symset))]]
            [s ds]))))

(defn remove-deps
  [deps symset]
  (let [removed (for [[s depset] deps]
                  [s (clojure.set/difference depset symset)])]
    (into (empty deps) removed)))

(defn topo-sort*
  [deps seen batches current]
  (if (empty? deps)
    (conj batches current)

    :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)
