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