"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.fanout = exports.splitStrong = exports.fanOut = exports.split = void 0; var function_1 = require("./function"); function split(S, C) { return function (pab, pcd) { return C.compose(S.second(pcd), S.first(pab)); }; } exports.split = split; function fanOut(S, C) { var splitSC = split(S, C); return function (pab, pac) { return C.compose(splitSC(pab, pac), S.promap(C.id(), function_1.identity, function (a) { return [a, a]; })); }; } exports.fanOut = fanOut; function splitStrong(F) { return split(F, F); } exports.splitStrong = splitStrong; function fanout(F) { return fanOut(F, F); } exports.fanout = fanout;