UNPKG

eff

Version:

An extensible effect monad based on the freer monad

52 lines (41 loc) 4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.interpretOutputStdOut = exports.interpretOutput = exports.putStringLine = exports.putString = void 0; var _daggy = _interopRequireDefault(require("daggy")); var _eff = require("./eff.js"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var Output = _daggy.default.taggedSum("Output", { putString: ["string"] }); var putString = function putString(s) { return (0, _eff.send)(Output.putString(s)); }; exports.putString = putString; var putStringLine = function putStringLine(s) { return (0, _eff.send)(Output.putString(s + "\n")); }; exports.putStringLine = putStringLine; var interpretOutput = function interpretOutput(outputStream) { return (0, _eff.interpreter)({ predicate: function predicate(x) { return Output.is(x); }, handler: function handler(outputEffect) { return outputEffect.cata({ putString: function putString(string) { return function (continuation) { outputStream.write(string, "utf8", function () { return continuation(null); }); }; } }); } }); }; exports.interpretOutput = interpretOutput; var interpretOutputStdOut = interpretOutput(process.stdout); exports.interpretOutputStdOut = interpretOutputStdOut; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NvdXJjZXMvb3V0cHV0LmpzIl0sIm5hbWVzIjpbIk91dHB1dCIsImRhZ2d5IiwidGFnZ2VkU3VtIiwicHV0U3RyaW5nIiwicyIsInB1dFN0cmluZ0xpbmUiLCJpbnRlcnByZXRPdXRwdXQiLCJvdXRwdXRTdHJlYW0iLCJwcmVkaWNhdGUiLCJ4IiwiaXMiLCJoYW5kbGVyIiwib3V0cHV0RWZmZWN0IiwiY2F0YSIsInN0cmluZyIsImNvbnRpbnVhdGlvbiIsIndyaXRlIiwiaW50ZXJwcmV0T3V0cHV0U3RkT3V0IiwicHJvY2VzcyIsInN0ZG91dCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUVBOztBQUVBOzs7O0FBRUEsSUFBTUEsTUFBTSxHQUFHQyxlQUFNQyxTQUFOLENBQWdCLFFBQWhCLEVBQTBCO0FBQ3hDQyxFQUFBQSxTQUFTLEVBQUUsQ0FBQyxRQUFEO0FBRDZCLENBQTFCLENBQWY7O0FBSU8sSUFBTUEsU0FBUyxHQUFHLFNBQVpBLFNBQVksQ0FBQ0MsQ0FBRDtBQUFBLFNBQWUsZUFBS0osTUFBTSxDQUFDRyxTQUFQLENBQWlCQyxDQUFqQixDQUFMLENBQWY7QUFBQSxDQUFsQjs7OztBQUNBLElBQU1DLGFBQWEsR0FBRyxTQUFoQkEsYUFBZ0IsQ0FBQ0QsQ0FBRDtBQUFBLFNBQWUsZUFBS0osTUFBTSxDQUFDRyxTQUFQLENBQWlCQyxDQUFDLEdBQUcsSUFBckIsQ0FBTCxDQUFmO0FBQUEsQ0FBdEI7Ozs7QUFFQSxJQUFNRSxlQUFlLEdBQUcsU0FBbEJBLGVBQWtCLENBQUNDLFlBQUQ7QUFBQSxTQUM5QixzQkFBWTtBQUNYQyxJQUFBQSxTQUFTLEVBQUUsbUJBQUFDLENBQUM7QUFBQSxhQUFJVCxNQUFNLENBQUNVLEVBQVAsQ0FBVUQsQ0FBVixDQUFKO0FBQUEsS0FERDtBQUVYRSxJQUFBQSxPQUFPLEVBQUUsaUJBQUFDLFlBQVk7QUFBQSxhQUNwQkEsWUFBWSxDQUFDQyxJQUFiLENBQWtCO0FBQ2pCVixRQUFBQSxTQUFTLEVBQUUsbUJBQUFXLE1BQU07QUFBQSxpQkFBSSxVQUFBQyxZQUFZLEVBQUk7QUFDcENSLFlBQUFBLFlBQVksQ0FBQ1MsS0FBYixDQUFtQkYsTUFBbkIsRUFBMkIsTUFBM0IsRUFBbUM7QUFBQSxxQkFBTUMsWUFBWSxDQUFDLElBQUQsQ0FBbEI7QUFBQSxhQUFuQztBQUNBLFdBRmdCO0FBQUE7QUFEQSxPQUFsQixDQURvQjtBQUFBO0FBRlYsR0FBWixDQUQ4QjtBQUFBLENBQXhCOzs7QUFXQSxJQUFNRSxxQkFBcUIsR0FBR1gsZUFBZSxDQUFDWSxPQUFPLENBQUNDLE1BQVQsQ0FBN0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBAZmxvdyAqL1xuXG5pbXBvcnQgZGFnZ3kgZnJvbSBcImRhZ2d5XCI7XG5cbmltcG9ydCB7IGludGVycHJldGVyLCBzZW5kIH0gZnJvbSBcIi4vZWZmLmpzXCI7XG5cbmNvbnN0IE91dHB1dCA9IGRhZ2d5LnRhZ2dlZFN1bShcIk91dHB1dFwiLCB7XG5cdHB1dFN0cmluZzogW1wic3RyaW5nXCJdLFxufSk7XG5cbmV4cG9ydCBjb25zdCBwdXRTdHJpbmcgPSAoczogc3RyaW5nKSA9PiBzZW5kKE91dHB1dC5wdXRTdHJpbmcocykpO1xuZXhwb3J0IGNvbnN0IHB1dFN0cmluZ0xpbmUgPSAoczogc3RyaW5nKSA9PiBzZW5kKE91dHB1dC5wdXRTdHJpbmcocyArIFwiXFxuXCIpKTtcblxuZXhwb3J0IGNvbnN0IGludGVycHJldE91dHB1dCA9IChvdXRwdXRTdHJlYW06IHN0cmVhbSRXcml0YWJsZSkgPT5cblx0aW50ZXJwcmV0ZXIoe1xuXHRcdHByZWRpY2F0ZTogeCA9PiBPdXRwdXQuaXMoeCksXG5cdFx0aGFuZGxlcjogb3V0cHV0RWZmZWN0ID0+XG5cdFx0XHRvdXRwdXRFZmZlY3QuY2F0YSh7XG5cdFx0XHRcdHB1dFN0cmluZzogc3RyaW5nID0+IGNvbnRpbnVhdGlvbiA9PiB7XG5cdFx0XHRcdFx0b3V0cHV0U3RyZWFtLndyaXRlKHN0cmluZywgXCJ1dGY4XCIsICgpID0+IGNvbnRpbnVhdGlvbihudWxsKSk7XG5cdFx0XHRcdH0sXG5cdFx0XHR9KSxcblx0fSk7XG5cbmV4cG9ydCBjb25zdCBpbnRlcnByZXRPdXRwdXRTdGRPdXQgPSBpbnRlcnByZXRPdXRwdXQocHJvY2Vzcy5zdGRvdXQpO1xuIl19