UNPKG

crocks

Version:

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

29 lines (22 loc) 782 B
/** @license ISC License (c) copyright 2016 original and current authors */ /** @author Ian Hofmann-Hicks (evil) */ var array = require('../core/array') var curry = require('../core/curry') var isArray = require('../core/isArray') var isApplicative = require('../core/isApplicative') var isFunction = require('../core/isFunction') function sequence(af, m) { if(!(isApplicative(af) || isFunction(af))) { throw new TypeError( 'sequence: Applicative TypeRep or Apply returning function required for first argument' ) } if(m && isFunction(m.sequence)) { return m.sequence(af) } if(isArray(m)) { return array.sequence(af, m) } throw new TypeError('sequence: Traversable or Array required for second argument') } module.exports = curry(sequence)