UNPKG

mezzanine

Version:

Fantasy land union types with pattern matching

36 lines (23 loc) 717 B
import { complement, isNil } from 'ramda'; import Union from '../union'; import Type from '../type'; var id = x => x; var Just = Type`Just`(complement(isNil)); var Nothing = Type`Nothing`(isNil); var Maybe = Union`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)) }); export default Maybe; //# sourceMappingURL=maybe.js.map