UNPKG

crocks

Version:

A collection of well known Algebraic Datatypes for your utter enjoyment.

33 lines (24 loc) 789 B
/** @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)