"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.tapTask = exports.chainFirstTaskK = exports.chainTaskK = exports.fromTaskK = void 0; /** * Lift a computation from the `Task` monad * * @since 2.10.0 */ var Chain_1 = require("./Chain"); var function_1 = require("./function"); function fromTaskK(F) { return function (f) { return (0, function_1.flow)(f, F.fromTask); }; } exports.fromTaskK = fromTaskK; function chainTaskK(F, M) { return function (f) { var g = (0, function_1.flow)(f, F.fromTask); return function (first) { return M.chain(first, g); }; }; } exports.chainTaskK = chainTaskK; function chainFirstTaskK(F, M) { var tapTaskM = tapTask(F, M); return function (f) { return function (first) { return tapTaskM(first, f); }; }; } exports.chainFirstTaskK = chainFirstTaskK; /** @internal */ function tapTask(F, M) { var tapM = (0, Chain_1.tap)(M); return function (self, f) { return tapM(self, (0, function_1.flow)(f, F.fromTask)); }; } exports.tapTask = tapTask;