 (ns parkour.reducers
-  (:refer-clojure :exclude [map-indexed reductions distinct count first keep])
-  (:require [clojure.core.reducers :as r]
+  (:refer-clojure
+   , :exclude [concat map-indexed reductions distinct count first keep])
+  (:require [clojure.core :as cc]
+            [clojure.core.reducers :as r]
             [clojure.core.protocols :as ccp]
             [transduce.reducers :as tr]
             [parkour.util :refer [returning]])
   (:import [java.util Random]))
+
+(defn concat
+  "Reducers version of `concat`."
+  [& colls] (r/mapcat identity colls))
 
 (defn map-indexed
   "Reducers version of `map-indexed`."

`r/reduce`."
  ([keyfn f coll]
     (let [sentinel (Object.)]
       (->> (r/mapcat identity [coll [sentinel]])
            (tr/map-state (fn [[k acc] x]
                            (if (identical? sentinel x)
                              [nil acc]

     (fn
       ([o] (apply f o x y more))
       ([o z] (apply f o x y z more))
       ([o z & args] (apply f o x y z (cc/concat more args))))))

(defn mjuxt
  "Return a function which calls each function in `fs` on the
