@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
JavaScript
;
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;