“Remove stickers”
mapping = ( map ) -> ( reductor ) -> ( result, input ) ->
reductor result, map input“Discard rotten”
filtering = ( predicate ) -> ( reductor ) -> ( result, input ) ->
if predicate input then reductor result, input else result“Aggregate slices”
flattening = ( flatten ) -> ( reductor ) -> ( result, input ) ->
result.reduce reductor, flatten inputReturns a logical collection object of collection whose reduce method is a
transformation of collection’s reduce.
reducer = ( collection, transformer ) ->
reduce: ( reductor, seed ) ->
collection.reduce transformer( reductor ), seed
reducer.map = ( fn, collection ) ->
reducer collection, mapping fn
reducer.filter = ( fn, collection ) ->
reducer collection, filtering fn
reducer.flatten = ( fn, collection ) ->
reducer collection, flattening fnmodule.exports = reducer