lib/uncons.js
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.uncons = uncons;
var _head = require('./head');
var _tail = require('./tail');
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
/**
* Decomposes a list into its head and tail.
*
* @since v0.1.0
* @param {Array|String} list
* @return {Array}
* @example
* uncons(range(1, 11)) // => [[1], [2, 3, 4, 5, 6, 7, 8, 9, 10]]
* uncons([1, 2, 3]) //=> [[1], [2, 3]]
* uncons([]) //=> undefined
*
* uncons('abc') //=> [['a'], ['b', 'c']]
* uncons('ze') // => [['z'], ['e']]
* uncons('q') // => ['q']
* uncons('') //=> undefined
*/
function uncons(list) {
if (list.length === 0) return undefined;
return list.length > 1 ? [[(0, _head.head)(list)], [].concat(_toConsumableArray((0, _tail.tail)(list)))] : [].concat(_toConsumableArray(list));
}