   (-realized? d))
 
 (defn- preserving-reduced
-  [f1]
-  #(let [ret (f1 %1 %2)]
+  [rf]
+  #(let [ret (rf %1 %2)]
      (if (reduced? ret)
        (reduced ret)
        ret)))

   new value.  Returns a lazy seq of partitions.  Returns a stateful
   transducer when no collection is provided."
  ([f]
     (fn [f1]
       (let [a (array-list)
             pa (atom ::none)]
         (fn
           ([] (f1))
           ([result]
              (let [result (if (.isEmpty a)
                             result
                             (let [v (vec (.toArray a))]
                               ;;clear first!
                               (.clear a)
                               (f1 result v)))]
                (f1 result)))
           ([result input]
              (let [pval @pa
                    val (f input)]

  ([prob coll]
     (filter (fn [_] (< (rand) prob)) coll)))

(deftype Eduction [xform coll]
   ISequential
   
   ISeqable
