 
 ;;; end of reducers macros
 
-(defn- protocol-prefix [psym]
+(core/defn- protocol-prefix [psym]
   (core/str (-> (core/str psym) (.replace \. \$) (.replace \/ \$)) "$"))
 
 (def #^:private base-type


;;; internal -- reducers-related macros

(defn- do-curried
  [name doc meta args body]
  (core/let [cargs (vec (butlast args))]
    `(defn ~name ~doc ~meta

  (pp/pprint (variadic-fn 'foo {} '(([a [b & cs] & xs] xs))))
  )

(core/defn- multi-arity-fn [name meta fdecl]
  (letfn [(dest-args [c]
            (map (fn [n] `(aget (js-arguments) ~n))
              (range c)))
