@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
133 lines (116 loc) • 2.07 kB
JavaScript
;
function filterInPlace(p, a) {
var i = 0;
var j = 0;
while(i < a.length) {
var v = a[i];
if (p(v)) {
a[j] = v;
j = j + 1 | 0;
}
i = i + 1 | 0;
};
a.splice(j);
}
function empty(a) {
a.splice(0);
}
function pushBack(x, xs) {
xs.push(x);
}
function memByRef(x, xs) {
return xs.indexOf(x) >= 0;
}
function iter(f, xs) {
for(var i = 0 ,i_finish = xs.length; i < i_finish; ++i){
f(xs[i]);
}
}
function iteri(f, a) {
for(var i = 0 ,i_finish = a.length; i < i_finish; ++i){
f(i, a[i]);
}
}
function toList(a) {
var _i = a.length - 1 | 0;
var _res = /* [] */0;
while(true) {
var res = _res;
var i = _i;
if (i < 0) {
return res;
}
_res = {
hd: a[i],
tl: res
};
_i = i - 1 | 0;
continue ;
};
}
function init(n, f) {
var v = new Array(n);
for(var i = 0; i < n; ++i){
v[i] = f(i);
}
return v;
}
function copy(x) {
var len = x.length;
var b = new Array(len);
for(var i = 0; i < len; ++i){
b[i] = x[i];
}
return b;
}
function map(f, a) {
var l = a.length;
var r = new Array(l);
for(var i = 0; i < l; ++i){
r[i] = f(a[i]);
}
return r;
}
function foldLeft(f, x, a) {
var r = x;
for(var i = 0 ,i_finish = a.length; i < i_finish; ++i){
r = f(r, a[i]);
}
return r;
}
function foldRight(f, a, x) {
var r = x;
for(var i = a.length - 1 | 0; i >= 0; --i){
r = f(a[i], r);
}
return r;
}
function mapi(f, a) {
var l = a.length;
if (l === 0) {
return [];
}
var r = new Array(l);
for(var i = 0; i < l; ++i){
r[i] = f(i, a[i]);
}
return r;
}
function append(x, a) {
return a.concat([x]);
}
exports.filterInPlace = filterInPlace;
exports.empty = empty;
exports.pushBack = pushBack;
exports.copy = copy;
exports.memByRef = memByRef;
exports.iter = iter;
exports.iteri = iteri;
exports.toList = toList;
exports.map = map;
exports.mapi = mapi;
exports.foldLeft = foldLeft;
exports.foldRight = foldRight;
exports.init = init;
exports.append = append;
/* No side effect */