diff --git a/README.md b/README.md index 4bd2025..d2b95b7 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,6 @@ Add this dependency to your project: [net.cgrand/xforms "0.1.0-SNAPSHOT"] ``` - ```clj => (require '[net.cgrand.xforms :as x]) ``` @@ -28,6 +27,15 @@ Add this dependency to your project: Execution time mean : 11,609631 µs ``` +`for` is the transducing cousin of `clojure.core/for`: + +```clj +=> (quick-bench (reduce + (for [i (range 128) j (range i)] (* i j)))) + Execution time mean : 514,932029 µs +=> (quick-bench (transduce (x/for [i % j (range i)] (* i j)) + 0 (range 128))) + Execution time mean : 373,814060 µs +``` + `by-key` and `reduce` are two new transducers. Here is an example usage: ```clj diff --git a/src/net/cgrand/xforms.clj b/src/net/cgrand/xforms.clj index f844abe..95222bc 100644 --- a/src/net/cgrand/xforms.clj +++ b/src/net/cgrand/xforms.clj @@ -17,7 +17,7 @@ :let `(let ~expr ~body) :when `(if ~expr ~body ~acc) :while `(if ~expr ~body (reduced ~acc)) - `(reduce (fn [~acc ~binding] ~body) ~acc ~expr))) + `(clj/reduce (fn [~acc ~binding] ~body) ~acc ~expr))) `(~rf ~acc ~body) (clj/partition 2 (rseq (vec seq-exprs))))] `(fn [~rf]