123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274 |
- /** @license MIT License (c) copyright 2010-2016 original author or authors */
- // Non-mutating array operations
- // cons :: a -> [a] -> [a]
- // a with x prepended
- function cons(x, a) {
- var l = a.length;
- var b = new Array(l + 1);
- b[0] = x;
- for (var i = 0; i < l; ++i) {
- b[i + 1] = a[i];
- }
- return b;
- }
- // append :: a -> [a] -> [a]
- // a with x appended
- function append(x, a) {
- var l = a.length;
- var b = new Array(l + 1);
- for (var i = 0; i < l; ++i) {
- b[i] = a[i];
- }
- b[l] = x;
- return b;
- }
- // drop :: Int -> [a] -> [a]
- // drop first n elements
- function drop(n, a) {
- // eslint-disable-line complexity
- if (n < 0) {
- throw new TypeError('n must be >= 0');
- }
- var l = a.length;
- if (n === 0 || l === 0) {
- return a;
- }
- if (n >= l) {
- return [];
- }
- return unsafeDrop(n, a, l - n);
- }
- // unsafeDrop :: Int -> [a] -> Int -> [a]
- // Internal helper for drop
- function unsafeDrop(n, a, l) {
- var b = new Array(l);
- for (var i = 0; i < l; ++i) {
- b[i] = a[n + i];
- }
- return b;
- }
- // tail :: [a] -> [a]
- // drop head element
- function tail(a) {
- return drop(1, a);
- }
- // copy :: [a] -> [a]
- // duplicate a (shallow duplication)
- function copy(a) {
- var l = a.length;
- var b = new Array(l);
- for (var i = 0; i < l; ++i) {
- b[i] = a[i];
- }
- return b;
- }
- // map :: (a -> b) -> [a] -> [b]
- // transform each element with f
- function map(f, a) {
- var l = a.length;
- var b = new Array(l);
- for (var i = 0; i < l; ++i) {
- b[i] = f(a[i]);
- }
- return b;
- }
- // reduce :: (a -> b -> a) -> a -> [b] -> a
- // accumulate via left-fold
- function reduce(f, z, a) {
- var r = z;
- for (var i = 0, l = a.length; i < l; ++i) {
- r = f(r, a[i], i);
- }
- return r;
- }
- // replace :: a -> Int -> [a]
- // replace element at index
- function replace(x, i, a) {
- // eslint-disable-line complexity
- if (i < 0) {
- throw new TypeError('i must be >= 0');
- }
- var l = a.length;
- var b = new Array(l);
- for (var j = 0; j < l; ++j) {
- b[j] = i === j ? x : a[j];
- }
- return b;
- }
- // remove :: Int -> [a] -> [a]
- // remove element at index
- function remove(i, a) {
- // eslint-disable-line complexity
- if (i < 0) {
- throw new TypeError('i must be >= 0');
- }
- var l = a.length;
- if (l === 0 || i >= l) {
- // exit early if index beyond end of array
- return a;
- }
- if (l === 1) {
- // exit early if index in bounds and length === 1
- return [];
- }
- return unsafeRemove(i, a, l - 1);
- }
- // unsafeRemove :: Int -> [a] -> Int -> [a]
- // Internal helper to remove element at index
- function unsafeRemove(i, a, l) {
- var b = new Array(l);
- var j = void 0;
- for (j = 0; j < i; ++j) {
- b[j] = a[j];
- }
- for (j = i; j < l; ++j) {
- b[j] = a[j + 1];
- }
- return b;
- }
- // removeAll :: (a -> boolean) -> [a] -> [a]
- // remove all elements matching a predicate
- // @deprecated
- function removeAll(f, a) {
- var l = a.length;
- var b = new Array(l);
- var j = 0;
- for (var x, i = 0; i < l; ++i) {
- x = a[i];
- if (!f(x)) {
- b[j] = x;
- ++j;
- }
- }
- b.length = j;
- return b;
- }
- // findIndex :: a -> [a] -> Int
- // find index of x in a, from the left
- function findIndex(x, a) {
- for (var i = 0, l = a.length; i < l; ++i) {
- if (x === a[i]) {
- return i;
- }
- }
- return -1;
- }
- // isArrayLike :: * -> boolean
- // Return true iff x is array-like
- function isArrayLike(x) {
- return x != null && typeof x.length === 'number' && typeof x !== 'function';
- }
- /** @license MIT License (c) copyright 2010-2016 original author or authors */
- // id :: a -> a
- var id = function id(x) {
- return x;
- };
- // compose :: (b -> c) -> (a -> b) -> (a -> c)
- var compose = function compose(f, g) {
- return function (x) {
- return f(g(x));
- };
- };
- // apply :: (a -> b) -> a -> b
- var apply = function apply(f, x) {
- return f(x);
- };
- // curry2 :: ((a, b) -> c) -> (a -> b -> c)
- function curry2(f) {
- function curried(a, b) {
- switch (arguments.length) {
- case 0:
- return curried;
- case 1:
- return function (b) {
- return f(a, b);
- };
- default:
- return f(a, b);
- }
- }
- return curried;
- }
- // curry3 :: ((a, b, c) -> d) -> (a -> b -> c -> d)
- function curry3(f) {
- function curried(a, b, c) {
- // eslint-disable-line complexity
- switch (arguments.length) {
- case 0:
- return curried;
- case 1:
- return curry2(function (b, c) {
- return f(a, b, c);
- });
- case 2:
- return function (c) {
- return f(a, b, c);
- };
- default:
- return f(a, b, c);
- }
- }
- return curried;
- }
- // curry4 :: ((a, b, c, d) -> e) -> (a -> b -> c -> d -> e)
- function curry4(f) {
- function curried(a, b, c, d) {
- // eslint-disable-line complexity
- switch (arguments.length) {
- case 0:
- return curried;
- case 1:
- return curry3(function (b, c, d) {
- return f(a, b, c, d);
- });
- case 2:
- return curry2(function (c, d) {
- return f(a, b, c, d);
- });
- case 3:
- return function (d) {
- return f(a, b, c, d);
- };
- default:
- return f(a, b, c, d);
- }
- }
- return curried;
- }
- /** @license MIT License (c) copyright 2016 original author or authors */
- export { cons, append, drop, tail, copy, map, reduce, replace, remove, removeAll, findIndex, isArrayLike, id, compose, apply, curry2, curry3, curry4 };
- //# sourceMappingURL=index.es.js.map
|