UNPKG

@harmoniclabs/plu-ts-onchain

Version:

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

31 lines (30 loc) 1.46 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.pdropList = exports.pindexList = 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 pInt_1 = require("../int/pInt.js"); function pindexList(elemsT) { return (0, phoist_1.phoist)((0, pfn_1.pfn)([ (0, type_system_1.list)(elemsT), type_system_1.int ], elemsT)(function (list, idx) { return pdropList(elemsT).$(list).$(idx).head; }, "pindexList")); } exports.pindexList = pindexList; function pdropList(elemsT) { return (0, phoist_1.phoist)((0, precursive_1.precursive)((0, pfn_1.pfn)([ (0, type_system_1.fn)([(0, type_system_1.list)(elemsT), type_system_1.int], (0, type_system_1.list)(elemsT)), (0, type_system_1.list)(elemsT), type_system_1.int ], (0, type_system_1.list)(elemsT))(function (self, lst, idx) { return (0, bool_1.pif)((0, type_system_1.list)(elemsT)).$((0, pInt_1.pInt)(0).eq(idx)) .then(lst) .else((0, papp_1.papp)((0, papp_1.papp)(self, (0, list_1.ptail)(elemsT).$(lst)), (0, pInt_1.pInt)(-1).add(idx))); }, "pdropList"))); } exports.pdropList = pdropList;