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...