crocks
Version:
A collection of well known Algebraic Datatypes for your utter enjoyment.
33 lines (24 loc) • 692 B
JavaScript
/** @license ISC License (c) copyright 2017 original and current authors */
/** @author Ian Hofmann-Hicks (evil) */
var hasAlg = require('../core/hasAlg')
var isSameType = require('../core/isSameType')
var fl = require('../core/flNames')
function empty(m) {
if(m && hasAlg('empty', m)) {
return (m[fl.empty] || m.empty).call(m)
}
if(m && hasAlg('empty', m.constructor)) {
return (m.constructor[fl.empty] || m.constructor.empty).call(m)
}
if(isSameType([], m)) {
return []
}
if(isSameType('', m)) {
return ''
}
if(isSameType({}, m)) {
return {}
}
throw new TypeError('empty: Monoid, Array, String or Object required')
}
module.exports = empty