zippa
Version:
A Generic Zipper Library
25 lines (20 loc) • 649 B
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.collect = exports.reduce = undefined;
var _index = require('../index');
var reduceVisitor = function reduceVisitor(fn) {
return function (item, state) {
return { state: fn(state, item) };
};
};
var reduce = exports.reduce = function reduce(fn, initialAcc, zipper) {
return (0, _index.visit)([(0, _index.onPre)(reduceVisitor(fn))], initialAcc, zipper).state;
};
var collect = exports.collect = function collect(fn, zipper) {
return reduce(function (acc, item) {
acc.push(fn(item));
return acc;
}, [], zipper);
};