mezzanine
Version:
Fantasy land union types with pattern matching
36 lines (24 loc) • 1.03 kB
JavaScript
;Object.defineProperty(exports, "__esModule", { value: true });
var _ramda = require('ramda');
var _union = require('../union');var _union2 = _interopRequireDefault(_union);
var _type = require('../type');var _type2 = _interopRequireDefault(_type);function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}
var id = x => x;
var Just = _type2.default`Just`((0, _ramda.complement)(_ramda.isNil));
var Nothing = _type2.default`Nothing`(_ramda.isNil);
var Maybe = _union2.default`Maybe`({ Just, Nothing }, {
map: ctx => mapFunction => Maybe(ctx.case({
Just: mapFunction,
Nothing: id })),
chain: ctx => chainFunction => ctx.case({
Just: chainFunction,
Nothing: () => ctx }),
filter: ctx => filterPredicate => ctx.chain(
data => filterPredicate(data) ?
Maybe(data) :
Maybe()),
reject: ctx => rejectPredicate => ctx.chain(
data => rejectPredicate(data) ?
Maybe() :
Maybe(data)) });exports.default =
Maybe;
//# sourceMappingURL=maybe.js.map