crocks
Version:
A collection of well known Algebraic Datatypes for your utter enjoyment.
28 lines (21 loc) • 591 B
JavaScript
/** @license ISC License (c) copyright 2019 original and current authors */
/** @author RichardForrester */
var isFunction = require('../core/isFunction')
var isNil = require('../core/isNil')
var ref = require('../core/Maybe');
var Nothing = ref.Nothing;
var Just = ref.Just;
function init(m) {
if(!isNil(m)) {
if(isFunction(m.init)) {
return m.init()
}
if(isFunction(m.slice)) {
return m.length < 2
? Nothing()
: Just(m.slice(0, -1))
}
}
throw new TypeError('init: Argument must be an Array, String, or List')
}
module.exports = init