@rescript/std
Version:
The motiviation of this repo is that when ReScript users want to share their library with JS users, the JS users don't need have ReScript toolchain installed, this makes sharing code with JS users easier (more details on that topic can be found in our [Ex
763 lines (682 loc) • 14.6 kB
JavaScript
'use strict';
var Caml = require("./caml.js");
var Curry = require("./curry.js");
var Js_math = require("./js_math.js");
var Caml_option = require("./caml_option.js");
function get(arr, i) {
if (i >= 0 && i < arr.length) {
return Caml_option.some(arr[i]);
}
}
function getExn(arr, i) {
if (!(i >= 0 && i < arr.length)) {
throw {
RE_EXN_ID: "Assert_failure",
_1: [
"belt_Array.res",
36,
2
],
Error: new Error()
};
}
return arr[i];
}
function set(arr, i, v) {
if (i >= 0 && i < arr.length) {
arr[i] = v;
return true;
} else {
return false;
}
}
function setExn(arr, i, v) {
if (!(i >= 0 && i < arr.length)) {
throw {
RE_EXN_ID: "Assert_failure",
_1: [
"belt_Array.res",
49,
2
],
Error: new Error()
};
}
arr[i] = v;
}
function swapUnsafe(xs, i, j) {
var tmp = xs[i];
xs[i] = xs[j];
xs[j] = tmp;
}
function shuffleInPlace(xs) {
var len = xs.length;
for(var i = 0; i < len; ++i){
swapUnsafe(xs, i, Js_math.random_int(i, len));
}
}
function shuffle(xs) {
var result = xs.slice(0);
shuffleInPlace(result);
return result;
}
function reverseInPlace(xs) {
var len = xs.length;
var ofs = 0;
for(var i = 0 ,i_finish = len / 2 | 0; i < i_finish; ++i){
swapUnsafe(xs, ofs + i | 0, ((ofs + len | 0) - i | 0) - 1 | 0);
}
}
function reverse(xs) {
var len = xs.length;
var result = new Array(len);
for(var i = 0; i < len; ++i){
result[i] = xs[(len - 1 | 0) - i | 0];
}
return result;
}
function make(l, f) {
if (l <= 0) {
return [];
}
var res = new Array(l);
for(var i = 0; i < l; ++i){
res[i] = f;
}
return res;
}
function makeByU(l, f) {
if (l <= 0) {
return [];
}
var res = new Array(l);
for(var i = 0; i < l; ++i){
res[i] = f(i);
}
return res;
}
function makeBy(l, f) {
return makeByU(l, Curry.__1(f));
}
function makeByAndShuffleU(l, f) {
var u = makeByU(l, f);
shuffleInPlace(u);
return u;
}
function makeByAndShuffle(l, f) {
return makeByAndShuffleU(l, Curry.__1(f));
}
function range(start, finish) {
var cut = finish - start | 0;
if (cut < 0) {
return [];
}
var arr = new Array(cut + 1 | 0);
for(var i = 0; i <= cut; ++i){
arr[i] = start + i | 0;
}
return arr;
}
function rangeBy(start, finish, step) {
var cut = finish - start | 0;
if (cut < 0 || step <= 0) {
return [];
}
var nb = (cut / step | 0) + 1 | 0;
var arr = new Array(nb);
var cur = start;
for(var i = 0; i < nb; ++i){
arr[i] = cur;
cur = cur + step | 0;
}
return arr;
}
function zip(xs, ys) {
var lenx = xs.length;
var leny = ys.length;
var len = lenx < leny ? lenx : leny;
var s = new Array(len);
for(var i = 0; i < len; ++i){
s[i] = [
xs[i],
ys[i]
];
}
return s;
}
function zipByU(xs, ys, f) {
var lenx = xs.length;
var leny = ys.length;
var len = lenx < leny ? lenx : leny;
var s = new Array(len);
for(var i = 0; i < len; ++i){
s[i] = f(xs[i], ys[i]);
}
return s;
}
function zipBy(xs, ys, f) {
return zipByU(xs, ys, Curry.__2(f));
}
function concat(a1, a2) {
var l1 = a1.length;
var l2 = a2.length;
var a1a2 = new Array(l1 + l2 | 0);
for(var i = 0; i < l1; ++i){
a1a2[i] = a1[i];
}
for(var i$1 = 0; i$1 < l2; ++i$1){
a1a2[l1 + i$1 | 0] = a2[i$1];
}
return a1a2;
}
function concatMany(arrs) {
var lenArrs = arrs.length;
var totalLen = 0;
for(var i = 0; i < lenArrs; ++i){
totalLen = totalLen + arrs[i].length | 0;
}
var result = new Array(totalLen);
totalLen = 0;
for(var j = 0; j < lenArrs; ++j){
var cur = arrs[j];
for(var k = 0 ,k_finish = cur.length; k < k_finish; ++k){
result[totalLen] = cur[k];
totalLen = totalLen + 1 | 0;
}
}
return result;
}
function slice(a, offset, len) {
if (len <= 0) {
return [];
}
var lena = a.length;
var ofs = offset < 0 ? Caml.int_max(lena + offset | 0, 0) : offset;
var hasLen = lena - ofs | 0;
var copyLength = hasLen < len ? hasLen : len;
if (copyLength <= 0) {
return [];
}
var result = new Array(copyLength);
for(var i = 0; i < copyLength; ++i){
result[i] = a[ofs + i | 0];
}
return result;
}
function sliceToEnd(a, offset) {
var lena = a.length;
var ofs = offset < 0 ? Caml.int_max(lena + offset | 0, 0) : offset;
var len = lena > ofs ? lena - ofs | 0 : 0;
var result = new Array(len);
for(var i = 0; i < len; ++i){
result[i] = a[ofs + i | 0];
}
return result;
}
function fill(a, offset, len, v) {
if (len <= 0) {
return ;
}
var lena = a.length;
var ofs = offset < 0 ? Caml.int_max(lena + offset | 0, 0) : offset;
var hasLen = lena - ofs | 0;
var fillLength = hasLen < len ? hasLen : len;
if (fillLength <= 0) {
return ;
}
for(var i = ofs ,i_finish = ofs + fillLength | 0; i < i_finish; ++i){
a[i] = v;
}
}
function blitUnsafe(a1, srcofs1, a2, srcofs2, blitLength) {
if (srcofs2 <= srcofs1) {
for(var j = 0; j < blitLength; ++j){
a2[j + srcofs2 | 0] = a1[j + srcofs1 | 0];
}
return ;
}
for(var j$1 = blitLength - 1 | 0; j$1 >= 0; --j$1){
a2[j$1 + srcofs2 | 0] = a1[j$1 + srcofs1 | 0];
}
}
function blit(a1, ofs1, a2, ofs2, len) {
var lena1 = a1.length;
var lena2 = a2.length;
var srcofs1 = ofs1 < 0 ? Caml.int_max(lena1 + ofs1 | 0, 0) : ofs1;
var srcofs2 = ofs2 < 0 ? Caml.int_max(lena2 + ofs2 | 0, 0) : ofs2;
var blitLength = Caml.int_min(len, Caml.int_min(lena1 - srcofs1 | 0, lena2 - srcofs2 | 0));
if (srcofs2 <= srcofs1) {
for(var j = 0; j < blitLength; ++j){
a2[j + srcofs2 | 0] = a1[j + srcofs1 | 0];
}
return ;
}
for(var j$1 = blitLength - 1 | 0; j$1 >= 0; --j$1){
a2[j$1 + srcofs2 | 0] = a1[j$1 + srcofs1 | 0];
}
}
function forEachU(a, f) {
for(var i = 0 ,i_finish = a.length; i < i_finish; ++i){
f(a[i]);
}
}
function forEach(a, f) {
forEachU(a, Curry.__1(f));
}
function mapU(a, f) {
var l = a.length;
var r = new Array(l);
for(var i = 0; i < l; ++i){
r[i] = f(a[i]);
}
return r;
}
function map(a, f) {
return mapU(a, Curry.__1(f));
}
function flatMapU(a, f) {
return concatMany(mapU(a, f));
}
function flatMap(a, f) {
return concatMany(mapU(a, Curry.__1(f)));
}
function getByU(a, p) {
var l = a.length;
var i = 0;
var r;
while(r === undefined && i < l) {
var v = a[i];
if (p(v)) {
r = Caml_option.some(v);
}
i = i + 1 | 0;
};
return r;
}
function getBy(a, p) {
return getByU(a, Curry.__1(p));
}
function getIndexByU(a, p) {
var l = a.length;
var i = 0;
var r;
while(r === undefined && i < l) {
var v = a[i];
if (p(v)) {
r = i;
}
i = i + 1 | 0;
};
return r;
}
function getIndexBy(a, p) {
return getIndexByU(a, Curry.__1(p));
}
function keepU(a, f) {
var l = a.length;
var r = new Array(l);
var j = 0;
for(var i = 0; i < l; ++i){
var v = a[i];
if (f(v)) {
r[j] = v;
j = j + 1 | 0;
}
}
r.length = j;
return r;
}
function keep(a, f) {
return keepU(a, Curry.__1(f));
}
function keepWithIndexU(a, f) {
var l = a.length;
var r = new Array(l);
var j = 0;
for(var i = 0; i < l; ++i){
var v = a[i];
if (f(v, i)) {
r[j] = v;
j = j + 1 | 0;
}
}
r.length = j;
return r;
}
function keepWithIndex(a, f) {
return keepWithIndexU(a, Curry.__2(f));
}
function keepMapU(a, f) {
var l = a.length;
var r = new Array(l);
var j = 0;
for(var i = 0; i < l; ++i){
var v = a[i];
var v$1 = f(v);
if (v$1 !== undefined) {
r[j] = Caml_option.valFromOption(v$1);
j = j + 1 | 0;
}
}
r.length = j;
return r;
}
function keepMap(a, f) {
return keepMapU(a, Curry.__1(f));
}
function forEachWithIndexU(a, f) {
for(var i = 0 ,i_finish = a.length; i < i_finish; ++i){
f(i, a[i]);
}
}
function forEachWithIndex(a, f) {
forEachWithIndexU(a, Curry.__2(f));
}
function mapWithIndexU(a, f) {
var l = a.length;
var r = new Array(l);
for(var i = 0; i < l; ++i){
r[i] = f(i, a[i]);
}
return r;
}
function mapWithIndex(a, f) {
return mapWithIndexU(a, Curry.__2(f));
}
function reduceU(a, x, f) {
var r = x;
for(var i = 0 ,i_finish = a.length; i < i_finish; ++i){
r = f(r, a[i]);
}
return r;
}
function reduce(a, x, f) {
return reduceU(a, x, Curry.__2(f));
}
function reduceReverseU(a, x, f) {
var r = x;
for(var i = a.length - 1 | 0; i >= 0; --i){
r = f(r, a[i]);
}
return r;
}
function reduceReverse(a, x, f) {
return reduceReverseU(a, x, Curry.__2(f));
}
function reduceReverse2U(a, b, x, f) {
var r = x;
var len = Caml.int_min(a.length, b.length);
for(var i = len - 1 | 0; i >= 0; --i){
r = f(r, a[i], b[i]);
}
return r;
}
function reduceReverse2(a, b, x, f) {
return reduceReverse2U(a, b, x, Curry.__3(f));
}
function reduceWithIndexU(a, x, f) {
var r = x;
for(var i = 0 ,i_finish = a.length; i < i_finish; ++i){
r = f(r, a[i], i);
}
return r;
}
function reduceWithIndex(a, x, f) {
return reduceWithIndexU(a, x, Curry.__3(f));
}
function everyU(arr, b) {
var len = arr.length;
var _i = 0;
while(true) {
var i = _i;
if (i === len) {
return true;
}
if (!b(arr[i])) {
return false;
}
_i = i + 1 | 0;
continue ;
};
}
function every(arr, f) {
return everyU(arr, Curry.__1(f));
}
function someU(arr, b) {
var len = arr.length;
var _i = 0;
while(true) {
var i = _i;
if (i === len) {
return false;
}
if (b(arr[i])) {
return true;
}
_i = i + 1 | 0;
continue ;
};
}
function some(arr, f) {
return someU(arr, Curry.__1(f));
}
function everyAux2(arr1, arr2, _i, b, len) {
while(true) {
var i = _i;
if (i === len) {
return true;
}
if (!b(arr1[i], arr2[i])) {
return false;
}
_i = i + 1 | 0;
continue ;
};
}
function every2U(a, b, p) {
return everyAux2(a, b, 0, p, Caml.int_min(a.length, b.length));
}
function every2(a, b, p) {
return every2U(a, b, Curry.__2(p));
}
function some2U(a, b, p) {
var _i = 0;
var len = Caml.int_min(a.length, b.length);
while(true) {
var i = _i;
if (i === len) {
return false;
}
if (p(a[i], b[i])) {
return true;
}
_i = i + 1 | 0;
continue ;
};
}
function some2(a, b, p) {
return some2U(a, b, Curry.__2(p));
}
function eqU(a, b, p) {
var lena = a.length;
var lenb = b.length;
if (lena === lenb) {
return everyAux2(a, b, 0, p, lena);
} else {
return false;
}
}
function eq(a, b, p) {
return eqU(a, b, Curry.__2(p));
}
function cmpU(a, b, p) {
var lena = a.length;
var lenb = b.length;
if (lena > lenb) {
return 1;
} else if (lena < lenb) {
return -1;
} else {
var _i = 0;
while(true) {
var i = _i;
if (i === lena) {
return 0;
}
var c = p(a[i], b[i]);
if (c !== 0) {
return c;
}
_i = i + 1 | 0;
continue ;
};
}
}
function cmp(a, b, p) {
return cmpU(a, b, Curry.__2(p));
}
function partitionU(a, f) {
var l = a.length;
var i = 0;
var j = 0;
var a1 = new Array(l);
var a2 = new Array(l);
for(var ii = 0; ii < l; ++ii){
var v = a[ii];
if (f(v)) {
a1[i] = v;
i = i + 1 | 0;
} else {
a2[j] = v;
j = j + 1 | 0;
}
}
a1.length = i;
a2.length = j;
return [
a1,
a2
];
}
function partition(a, f) {
return partitionU(a, Curry.__1(f));
}
function unzip(a) {
var l = a.length;
var a1 = new Array(l);
var a2 = new Array(l);
for(var i = 0; i < l; ++i){
var match = a[i];
a1[i] = match[0];
a2[i] = match[1];
}
return [
a1,
a2
];
}
function joinWithU(a, sep, toString) {
var l = a.length;
if (l === 0) {
return "";
}
var lastIndex = l - 1 | 0;
var _i = 0;
var _res = "";
while(true) {
var res = _res;
var i = _i;
if (i === lastIndex) {
return res + toString(a[i]);
}
_res = res + (toString(a[i]) + sep);
_i = i + 1 | 0;
continue ;
};
}
function joinWith(a, sep, toString) {
return joinWithU(a, sep, Curry.__1(toString));
}
function initU(n, f) {
var v = new Array(n);
for(var i = 0; i < n; ++i){
v[i] = f(i);
}
return v;
}
function init(n, f) {
return initU(n, Curry.__1(f));
}
exports.get = get;
exports.getExn = getExn;
exports.set = set;
exports.setExn = setExn;
exports.shuffleInPlace = shuffleInPlace;
exports.shuffle = shuffle;
exports.reverseInPlace = reverseInPlace;
exports.reverse = reverse;
exports.make = make;
exports.range = range;
exports.rangeBy = rangeBy;
exports.makeByU = makeByU;
exports.makeBy = makeBy;
exports.makeByAndShuffleU = makeByAndShuffleU;
exports.makeByAndShuffle = makeByAndShuffle;
exports.zip = zip;
exports.zipByU = zipByU;
exports.zipBy = zipBy;
exports.unzip = unzip;
exports.concat = concat;
exports.concatMany = concatMany;
exports.slice = slice;
exports.sliceToEnd = sliceToEnd;
exports.fill = fill;
exports.blit = blit;
exports.blitUnsafe = blitUnsafe;
exports.forEachU = forEachU;
exports.forEach = forEach;
exports.mapU = mapU;
exports.map = map;
exports.flatMapU = flatMapU;
exports.flatMap = flatMap;
exports.getByU = getByU;
exports.getBy = getBy;
exports.getIndexByU = getIndexByU;
exports.getIndexBy = getIndexBy;
exports.keepU = keepU;
exports.keep = keep;
exports.keepWithIndexU = keepWithIndexU;
exports.keepWithIndex = keepWithIndex;
exports.keepMapU = keepMapU;
exports.keepMap = keepMap;
exports.forEachWithIndexU = forEachWithIndexU;
exports.forEachWithIndex = forEachWithIndex;
exports.mapWithIndexU = mapWithIndexU;
exports.mapWithIndex = mapWithIndex;
exports.partitionU = partitionU;
exports.partition = partition;
exports.reduceU = reduceU;
exports.reduce = reduce;
exports.reduceReverseU = reduceReverseU;
exports.reduceReverse = reduceReverse;
exports.reduceReverse2U = reduceReverse2U;
exports.reduceReverse2 = reduceReverse2;
exports.reduceWithIndexU = reduceWithIndexU;
exports.reduceWithIndex = reduceWithIndex;
exports.joinWithU = joinWithU;
exports.joinWith = joinWith;
exports.someU = someU;
exports.some = some;
exports.everyU = everyU;
exports.every = every;
exports.every2U = every2U;
exports.every2 = every2;
exports.some2U = some2U;
exports.some2 = some2;
exports.cmpU = cmpU;
exports.cmp = cmp;
exports.eqU = eqU;
exports.eq = eq;
exports.initU = initU;
exports.init = init;
/* No side effect */