UNPKG

@harmoniclabs/plu-ts-onchain

Version:

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

46 lines (45 loc) 1.94 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.pcompareList = void 0; var types_1 = require("../../../../type_system/types.js"); var list_1 = require("../../../builtins/list/index.js"); var papp_1 = require("../../../papp.js"); var pfn_1 = require("../../../pfn.js"); var phoist_1 = require("../../../phoist.js"); var precursive_1 = require("../../../precursive/index.js"); function pcompareList(fstListElems, sndListElems) { var finalSelfType = (0, types_1.fn)([ (0, types_1.list)(fstListElems), (0, types_1.list)(sndListElems) ], types_1.bool); var matchFstNil_t = (0, types_1.fn)([ (0, types_1.list)(sndListElems) ], types_1.bool); var matchSndNil_t = (0, types_1.fn)([ (0, types_1.list)(fstListElems) ], types_1.bool); var matchCons_t = (0, types_1.fn)([ fstListElems, sndListElems, ], types_1.bool); 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) ], types_1.bool)(function (self, fstList, sndList) { return (0, list_1.pchooseList)(fstListElems, types_1.bool) .$(fstList) .caseNil((0, papp_1.papp)(matchFstNil, sndList)) .caseCons((0, list_1.pchooseList)(sndListElems, types_1.bool) .$(sndList) .caseNil((0, papp_1.papp)(matchSndNil, fstList)) .caseCons((0, papp_1.papp)((0, papp_1.papp)(matchCons, fstList.head), sndList.head).and((0, papp_1.papp)((0, papp_1.papp)(self, fstList.tail), sndList.tail)))); })); }, "pcompareList")); } exports.pcompareList = pcompareList;