Eric Elliott had an interesting tweet that intrigued me: https://twitter.com/_ericelliott/status/912407669683609600?s=03
Here's what he posted:
const map = transform => reducer => ((acc, current) => reducer(acc, transform(current)))
const filter = predicate => reducer => (
(acc, current) => predicate(current) ? reducer(acc, current) : acc
)