Transducer

Трансдусер је функција вишег реда која олакшава рад са токовима и низовима где је потребно мапирање и филтрирање података. Трансдусер решава проблем прављења привремених извора у сваком кораку секвенцијалног мапирања односно филтрирања што побољшава перформансе и смањује алокацију меморије. Проблем који трансдусер решава се може решити једним “дебелим” императивним редусером, међутим, на тај начин губимо апстракцију и поновну искористивост кода. Трансдусер је, за разлику од стандардног редусера, композабилан и може се ланчано повезивати, што је главни разлог његове употребе.

Трансдусер је функција која очекује reduce функцију и враћа reduce функцију.

type Reducer<A, V> = (accumulator: A, value: V) => A;
type Transducer<A, V> = (reducer: Reducer<A, V>) => Reducer<A, V>;

Трансдусер је комплементарна функција основног редусера који систему говори како да акумулира приспеле податке.