Understanding transducers
Transducers are essentially a stack of transformations that can be composed and applied to any representation of data. They allow us to define transformations that are agnostic of implementation-specific details about the source of the supplied data. Transducers also have a significant performance benefit. This is attributed to the avoidance of unnecessary memory allocations for arbitrary containers, such as sequences or other collections, to store intermediate results between transformations.
Note
Transducers have been introduced in Clojure 1.7.
Transformations can be composed without the use of transducers as well. This can be done using the comp and partial forms. We can pass any number of transformations to the comp function, and the transformation returned by the comp function will be a composition of the supplied transformations in the right-to-left order. In Clojure, a transformation is conventionally denoted as xf or xform.
Note
The following examples can be...