UNPKG

crocks

Version:

A collection of well known Algebraic Datatypes for your utter enjoyment.

23 lines (17 loc) 632 B
/** @license ISC License (c) copyright 2019 original and current authors */ /** @author Dale Francis (dalefrancis88) */ var curry = require('../core/curry') var isFunction = require('../core/isFunction') // bichain : bichain m => (e -> m c b) -> (a -> m c b) -> m e a -> m c b function bichain(f, g, m) { if(!isFunction(f) || !isFunction(g)) { throw new TypeError('bichain: First two arguments must be Sum Type returning functions') } if(m && isFunction(m.bichain)) { return m.bichain.call(m, f, g) } throw new TypeError( 'bichain: Third argument must be a Sum Type' ) } module.exports = curry(bichain)