Another thought: I think the best “feature” of transducers for performance-oriented language like Julia is actually not transducers themselves but rather the foldl
implementations specialized for container types. I guess that’s not news since Julia Base
has very efficient foldl
/mapfoldl
. However, foldl
(or mapfoldl
) itself is not really composable — that’s where transducers come in. Transducers are composable “pre-processors” of the “reducing function” op
you passed to foldl
. I think one of the great observations by Rich Hickey is that this set of pre-processors can be as powerful as the usual iterator tool chain. But, as @arghhhh pointed out, it requires a generalization of foldl
for supporting early termination and completion. I think it is worth doing so since it can be compiled away if you don’t use it.
6 Likes