Chapter 5. Composing Transducers
Let's get back to our journey of performing computations over data in Clojure. We've already discussed how reducers can be used to process collections in Chapter 3, Parallelization Using Reducers. Transducers are, in fact, a generalization of reducers that are independent of the source of data. Also, reducers are more about parallelization, while transducers are more focused on generalizing data transformations without restricting us to any particular source of data. Transducers capture the essence of the standard functions that operate on sequences, such as map
and filter
, for several sources of data. They allow us to define and compose transformations of data regardless of how the data is supplied to us.
Incidentally, in the context of physics, a transducer is a device that converts a signal from one form of energy into another form. In a way, Clojure transducers can be thought of as ways to capture the energy in functions, such as map...