_xscan.js 816 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. import _curry3 from "./_curry3.js";
  2. import _xfBase from "./_xfBase.js";
  3. var tInit = '@@transducer/init';
  4. var tStep = '@@transducer/step';
  5. var XScan =
  6. /*#__PURE__*/
  7. function () {
  8. function XScan(reducer, acc, xf) {
  9. this.xf = xf;
  10. this.f = reducer;
  11. this.acc = acc;
  12. }
  13. XScan.prototype[tInit] = function () {
  14. return this.xf[tStep](this.xf[tInit](), this.acc);
  15. };
  16. XScan.prototype['@@transducer/result'] = _xfBase.result;
  17. XScan.prototype[tStep] = function (result, input) {
  18. if (result['@@transducer/reduced']) {
  19. return result;
  20. }
  21. this.acc = this.f(this.acc, input);
  22. return this.xf[tStep](result, this.acc);
  23. };
  24. return XScan;
  25. }();
  26. var _xscan =
  27. /*#__PURE__*/
  28. _curry3(function _xscan(reducer, acc, xf) {
  29. return new XScan(reducer, acc, xf);
  30. });
  31. export default _xscan;