crocks
Version:
A collection of well known Algebraic Datatypes for your utter enjoyment.
33 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 isFunction = require('../core/isFunction')
var isSameType = require('../core/isSameType')
// listToArray : List a -> [ a ]
// listToArray : (a -> List b) -> a -> [ b ]
function listToArray(list) {
if(isFunction(list)) {
return function(x) {
var m = list(x)
if(!isSameType(List, m)) {
throw new TypeError('listToArray: List returning function required')
}
return m.toArray()
}
}
if(isSameType(List, list)) {
return list.toArray()
}
throw new TypeError('listToArray: List or List returning function required')
}
module.exports = curry(listToArray)