pragmatic-fp-ts
Version:
Opinionated functional programming library with easy use in mind
24 lines (23 loc) • 709 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.lift = exports.bindM = exports.bind = void 0;
const Either_1 = require("./Either");
const main_1 = require("./main");
const Maybe_1 = require("./Maybe");
function bind(f) {
return (m) => m._(f);
}
exports.bind = bind;
function bindM(f) {
return (m) => lift(m._(f));
}
exports.bindM = bindM;
const of = (m) => (v) => (m.isJust && m.isJust(m)) || (m.isNothing && m.isNothing())
? (0, Maybe_1.maybe)(v)
: (m.isLeft && m.isLeft()) || (m.isRight && m.isRight())
? (0, Either_1.either)(v)
: (0, main_1.chain)(v);
function lift(m) {
return of(m)(m.getValueOr(undefined));
}
exports.lift = lift;