UNPKG

@harmoniclabs/plu-ts-onchain

Version:

An embedded DSL for Cardano smart contracts creation coupled with a library for Cardano transactions, all in Typescript

62 lines (61 loc) 2.56 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.piterLists = void 0; var types_1 = require("../../../../type_system/types.js"); var papp_1 = require("../../../papp.js"); var pdelay_1 = require("../../../pdelay.js"); var pfn_1 = require("../../../pfn.js"); var phoist_1 = require("../../../phoist.js"); var precursive_1 = require("../../../precursive/index.js"); var pmatchList_1 = require("../pmatchList/index.js"); function piterLists(fstListElems, sndListElems, resultT) { var finalSelfType = (0, types_1.fn)([ (0, types_1.list)(fstListElems), (0, types_1.list)(sndListElems) ], resultT); var matchFstNil_t = (0, types_1.fn)([ finalSelfType, (0, types_1.list)(sndListElems) ], resultT); var matchSndNil_t = (0, types_1.fn)([ finalSelfType, (0, types_1.list)(fstListElems) ], resultT); var matchCons_t = (0, types_1.fn)([ finalSelfType, fstListElems, (0, types_1.list)(fstListElems), sndListElems, (0, types_1.list)(sndListElems) ], resultT); return (0, phoist_1.phoist)((0, pfn_1.pfn)([ matchFstNil_t, matchSndNil_t, matchCons_t ], finalSelfType)(function (matchFstNil, matchSndNil, matchCons) { return (0, precursive_1.precursive)((0, pfn_1.pfn)([ finalSelfType, (0, types_1.list)(fstListElems), (0, types_1.list)(sndListElems) ], resultT)(function (self, fstList, sndList) { return (0, pmatchList_1.pmatchList)(resultT, fstListElems) .$((0, pdelay_1.pdelay)((0, papp_1.papp)((0, papp_1.papp)(matchFstNil, self), sndList))) .$((0, pfn_1.pfn)([ fstListElems, (0, types_1.list)(fstListElems) ], resultT)(function (fstEl, restFst) { return (0, pmatchList_1.pmatchList)(resultT, sndListElems) .$((0, pdelay_1.pdelay)((0, papp_1.papp)((0, papp_1.papp)(matchSndNil, self), fstList))) .$((0, pfn_1.pfn)([ sndListElems, (0, types_1.list)(sndListElems) ], resultT)(function (sndEl, restSnd) { return (0, papp_1.papp)((0, papp_1.papp)((0, papp_1.papp)((0, papp_1.papp)((0, papp_1.papp)(matchCons, self), fstEl), restFst), sndEl), restSnd); })) .$(sndList); })) .$(fstList); })); }, "piterLists")); } exports.piterLists = piterLists;