Some notes for myself.
- Single-threaded concept, no inherent parallelism (as opposed to reducers)
- Key benefits: function composition, better performance by way of removing need for creation of intermediary collections
- Parallelism can be introduced by:
- Using core.async pipelines + transducers
- using r/fold (see comments here)
- For heavy, parallel data crunching, reducers will still probably be faster
- But transducers are a nicer overall concepts that fits better with the rest of Clojure
- Transducers have no inherent concept of laziness - they can be used to produce lazy sequences
References: