UNPKG

mezzanine

Version:

Fantasy land union types with pattern matching

36 lines (24 loc) 1.03 kB
'use strict';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