@harmoniclabs/plu-ts-onchain
Version:
An embedded DSL for Cardano smart contracts creation coupled with a library for Cardano transactions, all in Typescript
32 lines (31 loc) • 1.61 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.PListMaybe = void 0;
var palias_1 = require("../../../PTypes/PAlias/palias.js");
var type_system_1 = require("../../../type_system/index.js");
var punsafeConvertType_1 = require("../../punsafeConvertType/index.js");
var pfn_1 = require("../../pfn.js");
var phoist_1 = require("../../phoist.js");
var perror_1 = require("../../perror.js");
var pforce_1 = require("../../pforce/index.js");
var pdelay_1 = require("../../pdelay.js");
var list_1 = require("../../builtins/list/index.js");
var bool_1 = require("../../builtins/bool/index.js");
function PListMaybe(tyArg) {
return (0, palias_1.palias)((0, type_system_1.list)(tyArg), function (self_t) {
return {
isNothing: (0, punsafeConvertType_1.punsafeConvertType)(list_1.pisEmpty, (0, type_system_1.lam)(self_t, type_system_1.bool)),
unwrapOrFail: (0, phoist_1.phoist)((0, pfn_1.pfn)([self_t], tyArg)(function (self) {
return (0, bool_1.pif)(tyArg).$(list_1.pisEmpty.$(self))
.then((0, perror_1.perror)(tyArg))
.else(self.head);
})),
unwarpOrElse: (0, phoist_1.phoist)((0, pfn_1.pfn)([self_t, (0, type_system_1.delayed)(tyArg)], tyArg)(function (self, weDontLikeThat) {
return (0, pforce_1.pforce)((0, bool_1.pstrictIf)((0, type_system_1.delayed)(tyArg)).$(list_1.pisEmpty.$(self))
.$(weDontLikeThat)
.$((0, pdelay_1.pdelay)(self.head)));
}))
};
});
}
exports.PListMaybe = PListMaybe;