use private variables in clojure.core.reducers instead of copying the functions