UNPKG

fluture

Version:

FantasyLand compliant (monadic) alternative to Promises

17 lines (14 loc) 629 B
import {FL} from './internal/const.js'; import {invalidArgumentOf} from './internal/error.js'; import {isChain} from './internal/predicates.js'; import {isFuture, application1, application, func, ChainTransformation} from './future.js'; export var monad = {pred: isChain, error: invalidArgumentOf('have Chain implemented')}; export function chain(f){ var context1 = application1(chain, func, arguments); return function chain(m){ var context2 = application(2, chain, monad, arguments, context1); return isFuture(m) ? m._transform(new ChainTransformation(context2, f)) : m[FL.chain](f); }; }