UNPKG

fluture

Version:

FantasyLand compliant (monadic) alternative to Promises

58 lines (43 loc) 1.1 kB
import {FL} from './const'; export function isFunction(f){ return typeof f === 'function'; } export function isThenable(m){ return m instanceof Promise || m != null && isFunction(m.then); } export function isBoolean(f){ return typeof f === 'boolean'; } export function isNumber(f){ return typeof f === 'number'; } export function isUnsigned(n){ return (n === Infinity || isNumber(n) && n > 0 && n % 1 === 0); } export function isObject(o){ return o !== null && typeof o === 'object'; } export function isIterator(i){ return isObject(i) && isFunction(i.next); } export function isArray(x){ return Array.isArray(x); } export function hasMethod(method, x){ return x != null && isFunction(x[method]); } export function isFunctor(x){ return hasMethod(FL.map, x); } export function isAlt(x){ return isFunctor(x) && hasMethod(FL.alt, x); } export function isApply(x){ return isFunctor(x) && hasMethod(FL.ap, x); } export function isBifunctor(x){ return isFunctor(x) && hasMethod(FL.bimap, x); } export function isChain(x){ return isApply(x) && hasMethod(FL.chain, x); }