UNPKG

@harmoniclabs/plu-ts-onchain

Version:

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

36 lines (35 loc) 1.91 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.pfind = void 0; var type_system_1 = require("../../../type_system/index.js"); var bool_1 = require("../../builtins/bool/index.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"); var PMaybe_1 = require("../PMaybe/PMaybe.js"); var toData_minimal_1 = require("../data/conversion/toData_minimal.js"); function pfind(elemsT) { var PMaybeElem = (0, PMaybe_1.PMaybe)(elemsT); return (0, phoist_1.phoist)((0, phoist_1.phoist)((0, pfn_1.pfn)([ (0, type_system_1.lam)(elemsT, (0, type_system_1.asData)(elemsT)), (0, type_system_1.lam)(elemsT, type_system_1.bool) ], (0, type_system_1.lam)((0, type_system_1.list)(elemsT), PMaybeElem.type))(function (elemToData, predicate) { return (0, precursive_1.precursive)((0, pfn_1.pfn)([ (0, type_system_1.lam)((0, type_system_1.list)(elemsT), PMaybeElem.type), (0, type_system_1.list)(elemsT) ], PMaybeElem.type)(function (self, _list) { return (0, bool_1.pif)(PMaybeElem.type).$(list_1.pisEmpty.$(_list)) .then(PMaybeElem.Nothing({})) .else((0, bool_1.pif)(PMaybeElem.type).$((0, papp_1.papp)(predicate, _list.head)) .then(PMaybeElem.Just({ // "as any" because of // "Type 'Term<PAsData<ToPType<ElemsT>>>' is not assignable to type 'Term<PAsData<ToPType<FromPType<PElemsT>>>>'" val: (0, papp_1.papp)(elemToData, _list.head) })) .else((0, papp_1.papp)(self, (0, list_1.ptail)(elemsT).$(_list)))); })); }, "make_pfind")).$((0, toData_minimal_1._ptoData)(elemsT))); } exports.pfind = pfind;