map reducing function map transducer filter reducing function filter transducer take reducing function take transducer replace reducing function replace transducer
var c = chan( 1, // buffer size compose( // Only events with even x & y filtering(function (e) { return ( even(e.pageX) && even(e.pageY) ); }), // e -> [type, x, y] mapping(function (e) { return [e.type, e.pageX, e.pageY]; }) ) ); g
var c = chan( 1, // buffer size // Only events with even x & y // And transform format to [type, x, y] compose( // Only events with even x & y filtering(function (e) { return ( even(e.pageX) && even(e.pageY) ); }), // e -> [type, x, y] mapping(function (e) { return [e.type, e.pageX, e.pageY]; }) ) ); h
var receipt = compose( mapping(incOne), filtering(even) ); var reduceToArray = function (result, input) { return result.push(input); } [1,2,3,4].reduce( receipt(reduceToArray) , []); // [2, 4] x h z h ( x )
function mapping(transform) { return function (reducing) { return function (result, input) { return reducing(result, transform(input)); }; }; } transducer x g ! y f ! z g
function mapping(transform) { return function (reducing) { return function (result, input) { return reducing(result, transform(input)); }; }; } reducing function
function mapping(transform) { return function (reducing) { return function (result, input) { return reducing(result, transform(input)); }; }; } CollReduce initial value map transform x y x g ! y f ! z x g ! y f ! z