crocks
Version:
A collection of well known Algebraic Datatypes for your utter enjoyment.
32 lines (24 loc) • 789 B
JavaScript
/** @license ISC License (c) copyright 2017 original and current authors */
/** @author Ian Hofmann-Hicks (evil) */
var List = require('.')
var curry = require('../core/curry')
var isArray = require('../core/isArray')
var isFunction = require('../core/isFunction')
// arrayToList : [ a ] -> List a
// arrayToList : (a -> [ b ]) -> a -> List b
function arrayToList(array) {
if(isArray(array)) {
return List.fromArray(array)
}
else if(isFunction(array)) {
return function(x) {
var g = array(x)
if(!isArray(g)) {
throw new TypeError('arrayToList: Array returning function required')
}
return List.fromArray(g)
}
}
throw new TypeError('arrayToList: Array or Array returning function required')
}
module.exports = curry(arrayToList)