@ionre/utils
Version:
utility functions
150 lines (149 loc) • 4.24 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.all = function (f) { return function (arr) {
var i = 0;
var n = arr.length;
while (i < n) {
if (!f(arr[i]))
return false;
i++;
}
return true;
}; };
exports.any = function (f) { return function (arr) {
var i = 0;
var n = arr.length;
while (i < n) {
if (f(arr[i]))
return true;
i++;
}
return false;
}; };
exports.drop = function (n) { return function (arr) { return arr.slice(n); }; };
exports.filter = function (f) { return function (arr) {
var n = arr.length;
var arr1 = [];
for (var i = 0; i < n; i++) {
if (f(arr[i])) {
arr1 = arr1.concat([arr[i]]);
}
}
return arr1;
}; };
exports.flat = function (arr) {
var arr1 = [];
var n = arr.length;
for (var i = 0; i < n; i++) {
arr1 = arr1.concat(arr[i]);
}
return arr1;
};
exports.foldl = function (f) { return function (ival) { return function (arr) {
var acc = ival;
var n = arr.length;
for (var i = 0; i < n; i++) {
acc = f(acc)(arr[i]);
}
return acc;
}; }; };
exports.foldm = function (f) { return function (arr) {
var x = arr[0];
var n = arr.length;
for (var i = 1; i < n; i++) {
x = f(x)(arr[i]);
}
return x;
}; };
exports.foldr = function (f) { return function (ival) { return function (arr) {
var acc = ival;
for (var i = arr.length - 1; i >= 0; i--) {
acc = f(arr[i])(acc);
}
return acc;
}; }; };
exports.head = function (arr) { return arr[0]; };
exports.init = function (arr) { return arr.slice(0, arr.length - 1); };
exports.last = function (arr) { return arr[arr.length - 1]; };
exports.length = function (arr) { return arr.length; };
exports.map = function (f) { return function (arr) {
var n = arr.length;
var arr1 = Array(n);
for (var i = 0; i < n; i++) {
arr1[i] = f(arr[i]);
}
return arr1;
}; };
exports.map2 = function (f) { return function (arr1) { return function (arr2) {
var n = Math.min(arr1.length, arr2.length);
var arr = Array(n);
for (var i = 0; i < n; i++) {
arr[i] = f(arr1[i])(arr2[i]);
}
return arr;
}; }; };
exports.padl = function (minLen) { return function (val) { return function (arr) {
if (arr.length >= minLen)
return arr;
else {
return Array(minLen - arr.length).fill(val).concat(arr);
}
}; }; };
exports.padr = function (minLen) { return function (val) { return function (arr) {
if (arr.length >= minLen)
return arr;
else {
return arr.concat(Array(minLen - arr.length).fill(val));
}
}; }; };
exports.range = function (start) { return function (end) {
var n = end - start;
// let arr = new Float32Array(n)
// for (let i = 0; i < n; i++) {
// arr[i] = start + i
// }
// return arr
return (new Float32Array(n)).map(function (_, i) { return start + i; });
}; };
exports.range0 = function (n) {
// let arr = new Float32Array(n)
// for (let i = 0; i < n; i++) {
// arr[i] = i
// }
// return arr
return (new Float32Array(n)).map(function (_, i) { return i; });
};
exports.slice = function (start) { return function (end) { return function (arr) { return arr.slice(start, end); }; }; };
exports.take = function (n) { return function (arr) { return arr.slice(0, n); }; };
exports.takeWhile = function (f) { return function (arr) {
var n = arr.length;
var i = 0;
while (i < n) {
if (!f(arr[i])) {
break;
}
i++;
}
return arr.slice(0, i);
}; };
exports.tail = function (arr) { return arr.slice(1); };
exports.transpose = function (arr) {
var w = arr[0].length;
var h = arr.length;
var arr1 = [];
for (var i = 0; i < w; i++) {
arr1.push([]);
for (var j = 0; j < h; j++) {
arr1[i].push(arr[j][i]);
}
}
return arr1;
};
exports.zip = function (arr1) { return function (arr2) {
var n = Math.min(arr1.length, arr2.length);
var arr = Array(n);
for (var i = 0; i < n; i++) {
arr[i] = [arr1[i], arr2[i]];
}
return arr;
}; };