bs-platform
Version:
bucklescript compiler, ocaml standard libary by bucklescript and its required runtime support
1,552 lines (1,441 loc) • 27.1 kB
JavaScript
'use strict';
var Curry = require("./curry.js");
var Belt_Array = require("./belt_Array.js");
var Caml_option = require("./caml_option.js");
var Belt_SortArray = require("./belt_SortArray.js");
function head(x) {
if (x) {
return Caml_option.some(x[0]);
}
}
function headExn(x) {
if (x) {
return x[0];
} else {
throw new Error("headExn");
}
}
function tail(x) {
if (x) {
return x[1];
}
}
function tailExn(x) {
if (x) {
return x[1];
} else {
throw new Error("tailExn");
}
}
function add(xs, x) {
return /* :: */[
x,
xs
];
}
function get(x, n) {
if (n < 0) {
return ;
} else {
var _x = x;
var _n = n;
while(true) {
var n$1 = _n;
var x$1 = _x;
if (x$1) {
if (n$1 === 0) {
return Caml_option.some(x$1[0]);
} else {
_n = n$1 - 1 | 0;
_x = x$1[1];
continue ;
}
} else {
return ;
}
};
}
}
function getExn(x, n) {
if (n < 0) {
throw new Error("getExn");
}
var _x = x;
var _n = n;
while(true) {
var n$1 = _n;
var x$1 = _x;
if (x$1) {
if (n$1 === 0) {
return x$1[0];
} else {
_n = n$1 - 1 | 0;
_x = x$1[1];
continue ;
}
} else {
throw new Error("getExn");
}
};
}
function partitionAux(p, _cell, _precX, _precY) {
while(true) {
var precY = _precY;
var precX = _precX;
var cell = _cell;
if (cell) {
var t = cell[1];
var h = cell[0];
var next = /* :: */[
h,
/* [] */0
];
if (p(h)) {
precX[1] = next;
_precX = next;
_cell = t;
continue ;
} else {
precY[1] = next;
_precY = next;
_cell = t;
continue ;
}
} else {
return /* () */0;
}
};
}
function splitAux(_cell, _precX, _precY) {
while(true) {
var precY = _precY;
var precX = _precX;
var cell = _cell;
if (cell) {
var match = cell[0];
var nextA = /* :: */[
match[0],
/* [] */0
];
var nextB = /* :: */[
match[1],
/* [] */0
];
precX[1] = nextA;
precY[1] = nextB;
_precY = nextB;
_precX = nextA;
_cell = cell[1];
continue ;
} else {
return /* () */0;
}
};
}
function copyAuxCont(_cellX, _prec) {
while(true) {
var prec = _prec;
var cellX = _cellX;
if (cellX) {
var next = /* :: */[
cellX[0],
/* [] */0
];
prec[1] = next;
_prec = next;
_cellX = cellX[1];
continue ;
} else {
return prec;
}
};
}
function copyAuxWitFilter(f, _cellX, _prec) {
while(true) {
var prec = _prec;
var cellX = _cellX;
if (cellX) {
var t = cellX[1];
var h = cellX[0];
if (f(h)) {
var next = /* :: */[
h,
/* [] */0
];
prec[1] = next;
_prec = next;
_cellX = t;
continue ;
} else {
_cellX = t;
continue ;
}
} else {
return /* () */0;
}
};
}
function copyAuxWithFilterIndex(f, _cellX, _prec, _i) {
while(true) {
var i = _i;
var prec = _prec;
var cellX = _cellX;
if (cellX) {
var t = cellX[1];
var h = cellX[0];
if (f(h, i)) {
var next = /* :: */[
h,
/* [] */0
];
prec[1] = next;
_i = i + 1 | 0;
_prec = next;
_cellX = t;
continue ;
} else {
_i = i + 1 | 0;
_cellX = t;
continue ;
}
} else {
return /* () */0;
}
};
}
function copyAuxWitFilterMap(f, _cellX, _prec) {
while(true) {
var prec = _prec;
var cellX = _cellX;
if (cellX) {
var t = cellX[1];
var match = f(cellX[0]);
if (match !== undefined) {
var next = /* :: */[
Caml_option.valFromOption(match),
/* [] */0
];
prec[1] = next;
_prec = next;
_cellX = t;
continue ;
} else {
_cellX = t;
continue ;
}
} else {
return /* () */0;
}
};
}
function removeAssocAuxWithMap(_cellX, x, _prec, f) {
while(true) {
var prec = _prec;
var cellX = _cellX;
if (cellX) {
var t = cellX[1];
var h = cellX[0];
if (f(h[0], x)) {
prec[1] = t;
return true;
} else {
var next = /* :: */[
h,
/* [] */0
];
prec[1] = next;
_prec = next;
_cellX = t;
continue ;
}
} else {
return false;
}
};
}
function setAssocAuxWithMap(_cellX, x, k, _prec, eq) {
while(true) {
var prec = _prec;
var cellX = _cellX;
if (cellX) {
var t = cellX[1];
var h = cellX[0];
if (eq(h[0], x)) {
prec[1] = /* :: */[
/* tuple */[
x,
k
],
t
];
return true;
} else {
var next = /* :: */[
h,
/* [] */0
];
prec[1] = next;
_prec = next;
_cellX = t;
continue ;
}
} else {
return false;
}
};
}
function copyAuxWithMap(_cellX, _prec, f) {
while(true) {
var prec = _prec;
var cellX = _cellX;
if (cellX) {
var next = /* :: */[
f(cellX[0]),
/* [] */0
];
prec[1] = next;
_prec = next;
_cellX = cellX[1];
continue ;
} else {
return /* () */0;
}
};
}
function zipAux(_cellX, _cellY, _prec) {
while(true) {
var prec = _prec;
var cellY = _cellY;
var cellX = _cellX;
if (cellX && cellY) {
var next = /* :: */[
/* tuple */[
cellX[0],
cellY[0]
],
/* [] */0
];
prec[1] = next;
_prec = next;
_cellY = cellY[1];
_cellX = cellX[1];
continue ;
} else {
return /* () */0;
}
};
}
function copyAuxWithMap2(f, _cellX, _cellY, _prec) {
while(true) {
var prec = _prec;
var cellY = _cellY;
var cellX = _cellX;
if (cellX && cellY) {
var next = /* :: */[
f(cellX[0], cellY[0]),
/* [] */0
];
prec[1] = next;
_prec = next;
_cellY = cellY[1];
_cellX = cellX[1];
continue ;
} else {
return /* () */0;
}
};
}
function copyAuxWithMapI(f, _i, _cellX, _prec) {
while(true) {
var prec = _prec;
var cellX = _cellX;
var i = _i;
if (cellX) {
var next = /* :: */[
f(i, cellX[0]),
/* [] */0
];
prec[1] = next;
_prec = next;
_cellX = cellX[1];
_i = i + 1 | 0;
continue ;
} else {
return /* () */0;
}
};
}
function takeAux(_n, _cell, _prec) {
while(true) {
var prec = _prec;
var cell = _cell;
var n = _n;
if (n === 0) {
return true;
} else if (cell) {
var cell$1 = /* :: */[
cell[0],
/* [] */0
];
prec[1] = cell$1;
_prec = cell$1;
_cell = cell[1];
_n = n - 1 | 0;
continue ;
} else {
return false;
}
};
}
function splitAtAux(_n, _cell, _prec) {
while(true) {
var prec = _prec;
var cell = _cell;
var n = _n;
if (n === 0) {
return cell;
} else if (cell) {
var cell$1 = /* :: */[
cell[0],
/* [] */0
];
prec[1] = cell$1;
_prec = cell$1;
_cell = cell[1];
_n = n - 1 | 0;
continue ;
} else {
return ;
}
};
}
function take(lst, n) {
if (n < 0) {
return ;
} else if (n === 0) {
return /* [] */0;
} else if (lst) {
var cell = /* :: */[
lst[0],
/* [] */0
];
var has = takeAux(n - 1 | 0, lst[1], cell);
if (has) {
return cell;
} else {
return ;
}
} else {
return ;
}
}
function drop(lst, n) {
if (n < 0) {
return ;
} else {
var _l = lst;
var _n = n;
while(true) {
var n$1 = _n;
var l = _l;
if (n$1 === 0) {
return l;
} else if (l) {
_n = n$1 - 1 | 0;
_l = l[1];
continue ;
} else {
return ;
}
};
}
}
function splitAt(lst, n) {
if (n < 0) {
return ;
} else if (n === 0) {
return /* tuple */[
/* [] */0,
lst
];
} else if (lst) {
var cell = /* :: */[
lst[0],
/* [] */0
];
var rest = splitAtAux(n - 1 | 0, lst[1], cell);
if (rest !== undefined) {
return /* tuple */[
cell,
rest
];
} else {
return ;
}
} else {
return ;
}
}
function concat(xs, ys) {
if (xs) {
var cell = /* :: */[
xs[0],
/* [] */0
];
copyAuxCont(xs[1], cell)[1] = ys;
return cell;
} else {
return ys;
}
}
function mapU(xs, f) {
if (xs) {
var cell = /* :: */[
f(xs[0]),
/* [] */0
];
copyAuxWithMap(xs[1], cell, f);
return cell;
} else {
return /* [] */0;
}
}
function map(xs, f) {
return mapU(xs, Curry.__1(f));
}
function zipByU(l1, l2, f) {
if (l1 && l2) {
var cell = /* :: */[
f(l1[0], l2[0]),
/* [] */0
];
copyAuxWithMap2(f, l1[1], l2[1], cell);
return cell;
} else {
return /* [] */0;
}
}
function zipBy(l1, l2, f) {
return zipByU(l1, l2, Curry.__2(f));
}
function mapWithIndexU(xs, f) {
if (xs) {
var cell = /* :: */[
f(0, xs[0]),
/* [] */0
];
copyAuxWithMapI(f, 1, xs[1], cell);
return cell;
} else {
return /* [] */0;
}
}
function mapWithIndex(xs, f) {
return mapWithIndexU(xs, Curry.__2(f));
}
function makeByU(n, f) {
if (n <= 0) {
return /* [] */0;
} else {
var headX = /* :: */[
f(0),
/* [] */0
];
var cur = headX;
var i = 1;
while(i < n) {
var v = /* :: */[
f(i),
/* [] */0
];
cur[1] = v;
cur = v;
i = i + 1 | 0;
};
return headX;
}
}
function makeBy(n, f) {
return makeByU(n, Curry.__1(f));
}
function make(n, v) {
if (n <= 0) {
return /* [] */0;
} else {
var headX = /* :: */[
v,
/* [] */0
];
var cur = headX;
var i = 1;
while(i < n) {
var v$1 = /* :: */[
v,
/* [] */0
];
cur[1] = v$1;
cur = v$1;
i = i + 1 | 0;
};
return headX;
}
}
function length(xs) {
var _x = xs;
var _acc = 0;
while(true) {
var acc = _acc;
var x = _x;
if (x) {
_acc = acc + 1 | 0;
_x = x[1];
continue ;
} else {
return acc;
}
};
}
function fillAux(arr, _i, _x) {
while(true) {
var x = _x;
var i = _i;
if (x) {
arr[i] = x[0];
_x = x[1];
_i = i + 1 | 0;
continue ;
} else {
return /* () */0;
}
};
}
function fromArray(a) {
var a$1 = a;
var _i = a.length - 1 | 0;
var _res = /* [] */0;
while(true) {
var res = _res;
var i = _i;
if (i < 0) {
return res;
} else {
_res = /* :: */[
a$1[i],
res
];
_i = i - 1 | 0;
continue ;
}
};
}
function toArray(x) {
var len = length(x);
var arr = new Array(len);
fillAux(arr, 0, x);
return arr;
}
function shuffle(xs) {
var v = toArray(xs);
Belt_Array.shuffleInPlace(v);
return fromArray(v);
}
function reverseConcat(_l1, _l2) {
while(true) {
var l2 = _l2;
var l1 = _l1;
if (l1) {
_l2 = /* :: */[
l1[0],
l2
];
_l1 = l1[1];
continue ;
} else {
return l2;
}
};
}
function reverse(l) {
return reverseConcat(l, /* [] */0);
}
function flattenAux(_prec, _xs) {
while(true) {
var xs = _xs;
var prec = _prec;
if (xs) {
_xs = xs[1];
_prec = copyAuxCont(xs[0], prec);
continue ;
} else {
prec[1] = /* [] */0;
return /* () */0;
}
};
}
function flatten(_xs) {
while(true) {
var xs = _xs;
if (xs) {
var match = xs[0];
if (match) {
var cell = /* :: */[
match[0],
/* [] */0
];
flattenAux(copyAuxCont(match[1], cell), xs[1]);
return cell;
} else {
_xs = xs[1];
continue ;
}
} else {
return /* [] */0;
}
};
}
function concatMany(xs) {
var len = xs.length;
if (len !== 1) {
if (len !== 0) {
var len$1 = xs.length;
var v = xs[len$1 - 1 | 0];
for(var i = len$1 - 2 | 0; i >= 0; --i){
v = concat(xs[i], v);
}
return v;
} else {
return /* [] */0;
}
} else {
return xs[0];
}
}
function mapReverseU(l, f) {
var f$1 = f;
var _accu = /* [] */0;
var _xs = l;
while(true) {
var xs = _xs;
var accu = _accu;
if (xs) {
_xs = xs[1];
_accu = /* :: */[
f$1(xs[0]),
accu
];
continue ;
} else {
return accu;
}
};
}
function mapReverse(l, f) {
return mapReverseU(l, Curry.__1(f));
}
function forEachU(_xs, f) {
while(true) {
var xs = _xs;
if (xs) {
f(xs[0]);
_xs = xs[1];
continue ;
} else {
return /* () */0;
}
};
}
function forEach(xs, f) {
return forEachU(xs, Curry.__1(f));
}
function forEachWithIndexU(l, f) {
var _xs = l;
var _i = 0;
var f$1 = f;
while(true) {
var i = _i;
var xs = _xs;
if (xs) {
f$1(i, xs[0]);
_i = i + 1 | 0;
_xs = xs[1];
continue ;
} else {
return /* () */0;
}
};
}
function forEachWithIndex(l, f) {
return forEachWithIndexU(l, Curry.__2(f));
}
function reduceU(_l, _accu, f) {
while(true) {
var accu = _accu;
var l = _l;
if (l) {
_accu = f(accu, l[0]);
_l = l[1];
continue ;
} else {
return accu;
}
};
}
function reduce(l, accu, f) {
return reduceU(l, accu, Curry.__2(f));
}
function reduceReverseUnsafeU(l, accu, f) {
if (l) {
return f(reduceReverseUnsafeU(l[1], accu, f), l[0]);
} else {
return accu;
}
}
function reduceReverseU(l, acc, f) {
var len = length(l);
if (len < 1000) {
return reduceReverseUnsafeU(l, acc, f);
} else {
return Belt_Array.reduceReverseU(toArray(l), acc, f);
}
}
function reduceReverse(l, accu, f) {
return reduceReverseU(l, accu, Curry.__2(f));
}
function reduceWithIndexU(l, acc, f) {
var _l = l;
var _acc = acc;
var f$1 = f;
var _i = 0;
while(true) {
var i = _i;
var acc$1 = _acc;
var l$1 = _l;
if (l$1) {
_i = i + 1 | 0;
_acc = f$1(acc$1, l$1[0], i);
_l = l$1[1];
continue ;
} else {
return acc$1;
}
};
}
function reduceWithIndex(l, acc, f) {
return reduceWithIndexU(l, acc, Curry.__3(f));
}
function mapReverse2U(l1, l2, f) {
var _l1 = l1;
var _l2 = l2;
var _accu = /* [] */0;
var f$1 = f;
while(true) {
var accu = _accu;
var l2$1 = _l2;
var l1$1 = _l1;
if (l1$1 && l2$1) {
_accu = /* :: */[
f$1(l1$1[0], l2$1[0]),
accu
];
_l2 = l2$1[1];
_l1 = l1$1[1];
continue ;
} else {
return accu;
}
};
}
function mapReverse2(l1, l2, f) {
return mapReverse2U(l1, l2, Curry.__2(f));
}
function forEach2U(_l1, _l2, f) {
while(true) {
var l2 = _l2;
var l1 = _l1;
if (l1 && l2) {
f(l1[0], l2[0]);
_l2 = l2[1];
_l1 = l1[1];
continue ;
} else {
return /* () */0;
}
};
}
function forEach2(l1, l2, f) {
return forEach2U(l1, l2, Curry.__2(f));
}
function reduce2U(_l1, _l2, _accu, f) {
while(true) {
var accu = _accu;
var l2 = _l2;
var l1 = _l1;
if (l1 && l2) {
_accu = f(accu, l1[0], l2[0]);
_l2 = l2[1];
_l1 = l1[1];
continue ;
} else {
return accu;
}
};
}
function reduce2(l1, l2, acc, f) {
return reduce2U(l1, l2, acc, Curry.__3(f));
}
function reduceReverse2UnsafeU(l1, l2, accu, f) {
if (l1 && l2) {
return f(reduceReverse2UnsafeU(l1[1], l2[1], accu, f), l1[0], l2[0]);
} else {
return accu;
}
}
function reduceReverse2U(l1, l2, acc, f) {
var len = length(l1);
if (len < 1000) {
return reduceReverse2UnsafeU(l1, l2, acc, f);
} else {
return Belt_Array.reduceReverse2U(toArray(l1), toArray(l2), acc, f);
}
}
function reduceReverse2(l1, l2, acc, f) {
return reduceReverse2U(l1, l2, acc, Curry.__3(f));
}
function everyU(_xs, p) {
while(true) {
var xs = _xs;
if (xs) {
if (p(xs[0])) {
_xs = xs[1];
continue ;
} else {
return false;
}
} else {
return true;
}
};
}
function every(xs, p) {
return everyU(xs, Curry.__1(p));
}
function someU(_xs, p) {
while(true) {
var xs = _xs;
if (xs) {
if (p(xs[0])) {
return true;
} else {
_xs = xs[1];
continue ;
}
} else {
return false;
}
};
}
function some(xs, p) {
return someU(xs, Curry.__1(p));
}
function every2U(_l1, _l2, p) {
while(true) {
var l2 = _l2;
var l1 = _l1;
if (l1 && l2) {
if (p(l1[0], l2[0])) {
_l2 = l2[1];
_l1 = l1[1];
continue ;
} else {
return false;
}
} else {
return true;
}
};
}
function every2(l1, l2, p) {
return every2U(l1, l2, Curry.__2(p));
}
function cmpByLength(_l1, _l2) {
while(true) {
var l2 = _l2;
var l1 = _l1;
if (l1) {
if (l2) {
_l2 = l2[1];
_l1 = l1[1];
continue ;
} else {
return 1;
}
} else if (l2) {
return -1;
} else {
return 0;
}
};
}
function cmpU(_l1, _l2, p) {
while(true) {
var l2 = _l2;
var l1 = _l1;
if (l1) {
if (l2) {
var c = p(l1[0], l2[0]);
if (c === 0) {
_l2 = l2[1];
_l1 = l1[1];
continue ;
} else {
return c;
}
} else {
return 1;
}
} else if (l2) {
return -1;
} else {
return 0;
}
};
}
function cmp(l1, l2, f) {
return cmpU(l1, l2, Curry.__2(f));
}
function eqU(_l1, _l2, p) {
while(true) {
var l2 = _l2;
var l1 = _l1;
if (l1) {
if (l2 && p(l1[0], l2[0])) {
_l2 = l2[1];
_l1 = l1[1];
continue ;
} else {
return false;
}
} else if (l2) {
return false;
} else {
return true;
}
};
}
function eq(l1, l2, f) {
return eqU(l1, l2, Curry.__2(f));
}
function some2U(_l1, _l2, p) {
while(true) {
var l2 = _l2;
var l1 = _l1;
if (l1 && l2) {
if (p(l1[0], l2[0])) {
return true;
} else {
_l2 = l2[1];
_l1 = l1[1];
continue ;
}
} else {
return false;
}
};
}
function some2(l1, l2, p) {
return some2U(l1, l2, Curry.__2(p));
}
function hasU(_xs, x, eq) {
while(true) {
var xs = _xs;
if (xs) {
if (eq(xs[0], x)) {
return true;
} else {
_xs = xs[1];
continue ;
}
} else {
return false;
}
};
}
function has(xs, x, eq) {
return hasU(xs, x, Curry.__2(eq));
}
function getAssocU(_xs, x, eq) {
while(true) {
var xs = _xs;
if (xs) {
var match = xs[0];
if (eq(match[0], x)) {
return Caml_option.some(match[1]);
} else {
_xs = xs[1];
continue ;
}
} else {
return ;
}
};
}
function getAssoc(xs, x, eq) {
return getAssocU(xs, x, Curry.__2(eq));
}
function hasAssocU(_xs, x, eq) {
while(true) {
var xs = _xs;
if (xs) {
if (eq(xs[0][0], x)) {
return true;
} else {
_xs = xs[1];
continue ;
}
} else {
return false;
}
};
}
function hasAssoc(xs, x, eq) {
return hasAssocU(xs, x, Curry.__2(eq));
}
function removeAssocU(xs, x, eq) {
if (xs) {
var l = xs[1];
var pair = xs[0];
if (eq(pair[0], x)) {
return l;
} else {
var cell = /* :: */[
pair,
/* [] */0
];
var removed = removeAssocAuxWithMap(l, x, cell, eq);
if (removed) {
return cell;
} else {
return xs;
}
}
} else {
return /* [] */0;
}
}
function removeAssoc(xs, x, eq) {
return removeAssocU(xs, x, Curry.__2(eq));
}
function setAssocU(xs, x, k, eq) {
if (xs) {
var l = xs[1];
var pair = xs[0];
if (eq(pair[0], x)) {
return /* :: */[
/* tuple */[
x,
k
],
l
];
} else {
var cell = /* :: */[
pair,
/* [] */0
];
var replaced = setAssocAuxWithMap(l, x, k, cell, eq);
if (replaced) {
return cell;
} else {
return /* :: */[
/* tuple */[
x,
k
],
xs
];
}
}
} else {
return /* :: */[
/* tuple */[
x,
k
],
/* [] */0
];
}
}
function setAssoc(xs, x, k, eq) {
return setAssocU(xs, x, k, Curry.__2(eq));
}
function sortU(xs, cmp) {
var arr = toArray(xs);
Belt_SortArray.stableSortInPlaceByU(arr, cmp);
return fromArray(arr);
}
function sort(xs, cmp) {
return sortU(xs, Curry.__2(cmp));
}
function getByU(_xs, p) {
while(true) {
var xs = _xs;
if (xs) {
var x = xs[0];
if (p(x)) {
return Caml_option.some(x);
} else {
_xs = xs[1];
continue ;
}
} else {
return ;
}
};
}
function getBy(xs, p) {
return getByU(xs, Curry.__1(p));
}
function keepU(_xs, p) {
while(true) {
var xs = _xs;
if (xs) {
var t = xs[1];
var h = xs[0];
if (p(h)) {
var cell = /* :: */[
h,
/* [] */0
];
copyAuxWitFilter(p, t, cell);
return cell;
} else {
_xs = t;
continue ;
}
} else {
return /* [] */0;
}
};
}
function keep(xs, p) {
return keepU(xs, Curry.__1(p));
}
function keepWithIndexU(xs, p) {
var _xs = xs;
var p$1 = p;
var _i = 0;
while(true) {
var i = _i;
var xs$1 = _xs;
if (xs$1) {
var t = xs$1[1];
var h = xs$1[0];
if (p$1(h, i)) {
var cell = /* :: */[
h,
/* [] */0
];
copyAuxWithFilterIndex(p$1, t, cell, i + 1 | 0);
return cell;
} else {
_i = i + 1 | 0;
_xs = t;
continue ;
}
} else {
return /* [] */0;
}
};
}
function keepWithIndex(xs, p) {
return keepWithIndexU(xs, Curry.__2(p));
}
function keepMapU(_xs, p) {
while(true) {
var xs = _xs;
if (xs) {
var t = xs[1];
var match = p(xs[0]);
if (match !== undefined) {
var cell = /* :: */[
Caml_option.valFromOption(match),
/* [] */0
];
copyAuxWitFilterMap(p, t, cell);
return cell;
} else {
_xs = t;
continue ;
}
} else {
return /* [] */0;
}
};
}
function keepMap(xs, p) {
return keepMapU(xs, Curry.__1(p));
}
function partitionU(l, p) {
if (l) {
var h = l[0];
var nextX = /* :: */[
h,
/* [] */0
];
var nextY = /* :: */[
h,
/* [] */0
];
var b = p(h);
partitionAux(p, l[1], nextX, nextY);
if (b) {
return /* tuple */[
nextX,
nextY[1]
];
} else {
return /* tuple */[
nextX[1],
nextY
];
}
} else {
return /* tuple */[
/* [] */0,
/* [] */0
];
}
}
function partition(l, p) {
return partitionU(l, Curry.__1(p));
}
function unzip(xs) {
if (xs) {
var match = xs[0];
var cellX = /* :: */[
match[0],
/* [] */0
];
var cellY = /* :: */[
match[1],
/* [] */0
];
splitAux(xs[1], cellX, cellY);
return /* tuple */[
cellX,
cellY
];
} else {
return /* tuple */[
/* [] */0,
/* [] */0
];
}
}
function zip(l1, l2) {
if (l1 && l2) {
var cell = /* :: */[
/* tuple */[
l1[0],
l2[0]
],
/* [] */0
];
zipAux(l1[1], l2[1], cell);
return cell;
} else {
return /* [] */0;
}
}
var size = length;
var filter = keep;
var filterWithIndex = keepWithIndex;
exports.length = length;
exports.size = size;
exports.head = head;
exports.headExn = headExn;
exports.tail = tail;
exports.tailExn = tailExn;
exports.add = add;
exports.get = get;
exports.getExn = getExn;
exports.make = make;
exports.makeByU = makeByU;
exports.makeBy = makeBy;
exports.shuffle = shuffle;
exports.drop = drop;
exports.take = take;
exports.splitAt = splitAt;
exports.concat = concat;
exports.concatMany = concatMany;
exports.reverseConcat = reverseConcat;
exports.flatten = flatten;
exports.mapU = mapU;
exports.map = map;
exports.zip = zip;
exports.zipByU = zipByU;
exports.zipBy = zipBy;
exports.mapWithIndexU = mapWithIndexU;
exports.mapWithIndex = mapWithIndex;
exports.fromArray = fromArray;
exports.toArray = toArray;
exports.reverse = reverse;
exports.mapReverseU = mapReverseU;
exports.mapReverse = mapReverse;
exports.forEachU = forEachU;
exports.forEach = forEach;
exports.forEachWithIndexU = forEachWithIndexU;
exports.forEachWithIndex = forEachWithIndex;
exports.reduceU = reduceU;
exports.reduce = reduce;
exports.reduceWithIndexU = reduceWithIndexU;
exports.reduceWithIndex = reduceWithIndex;
exports.reduceReverseU = reduceReverseU;
exports.reduceReverse = reduceReverse;
exports.mapReverse2U = mapReverse2U;
exports.mapReverse2 = mapReverse2;
exports.forEach2U = forEach2U;
exports.forEach2 = forEach2;
exports.reduce2U = reduce2U;
exports.reduce2 = reduce2;
exports.reduceReverse2U = reduceReverse2U;
exports.reduceReverse2 = reduceReverse2;
exports.everyU = everyU;
exports.every = every;
exports.someU = someU;
exports.some = some;
exports.every2U = every2U;
exports.every2 = every2;
exports.some2U = some2U;
exports.some2 = some2;
exports.cmpByLength = cmpByLength;
exports.cmpU = cmpU;
exports.cmp = cmp;
exports.eqU = eqU;
exports.eq = eq;
exports.hasU = hasU;
exports.has = has;
exports.getByU = getByU;
exports.getBy = getBy;
exports.keepU = keepU;
exports.keep = keep;
exports.filter = filter;
exports.keepWithIndexU = keepWithIndexU;
exports.keepWithIndex = keepWithIndex;
exports.filterWithIndex = filterWithIndex;
exports.keepMapU = keepMapU;
exports.keepMap = keepMap;
exports.partitionU = partitionU;
exports.partition = partition;
exports.unzip = unzip;
exports.getAssocU = getAssocU;
exports.getAssoc = getAssoc;
exports.hasAssocU = hasAssocU;
exports.hasAssoc = hasAssoc;
exports.removeAssocU = removeAssocU;
exports.removeAssoc = removeAssoc;
exports.setAssocU = setAssocU;
exports.setAssoc = setAssoc;
exports.sortU = sortU;
exports.sort = sort;
/* No side effect */