bs-platform
Version:
bucklescript compiler, ocaml standard libary by bucklescript and its required runtime support
1,681 lines (1,606 loc) • 35.7 kB
JavaScript
'use strict';
var Curry = require("./curry.js");
var Caml_obj = require("./caml_obj.js");
var Pervasives = require("./pervasives.js");
var Caml_option = require("./caml_option.js");
var Caml_builtin_exceptions = require("./caml_builtin_exceptions.js");
function length(l) {
var _len = 0;
var _param = l;
while(true) {
var param = _param;
var len = _len;
if (!param) {
return len;
}
_param = param[1];
_len = len + 1 | 0;
continue ;
};
}
function cons(a, l) {
return /* :: */[
a,
l
];
}
function hd(param) {
if (param) {
return param[0];
}
throw [
Caml_builtin_exceptions.failure,
"hd"
];
}
function tl(param) {
if (param) {
return param[1];
}
throw [
Caml_builtin_exceptions.failure,
"tl"
];
}
function nth(l, n) {
if (n < 0) {
throw [
Caml_builtin_exceptions.invalid_argument,
"List.nth"
];
}
var _l = l;
var _n = n;
while(true) {
var n$1 = _n;
var l$1 = _l;
if (l$1) {
if (n$1 === 0) {
return l$1[0];
}
_n = n$1 - 1 | 0;
_l = l$1[1];
continue ;
}
throw [
Caml_builtin_exceptions.failure,
"nth"
];
};
}
function nth_opt(l, n) {
if (n < 0) {
throw [
Caml_builtin_exceptions.invalid_argument,
"List.nth"
];
}
var _l = l;
var _n = n;
while(true) {
var n$1 = _n;
var l$1 = _l;
if (!l$1) {
return ;
}
if (n$1 === 0) {
return Caml_option.some(l$1[0]);
}
_n = n$1 - 1 | 0;
_l = l$1[1];
continue ;
};
}
function rev_append(_l1, _l2) {
while(true) {
var l2 = _l2;
var l1 = _l1;
if (!l1) {
return l2;
}
_l2 = /* :: */[
l1[0],
l2
];
_l1 = l1[1];
continue ;
};
}
function rev(l) {
return rev_append(l, /* [] */0);
}
function init_tailrec_aux(_acc, _i, n, f) {
while(true) {
var i = _i;
var acc = _acc;
if (i >= n) {
return acc;
}
_i = i + 1 | 0;
_acc = /* :: */[
Curry._1(f, i),
acc
];
continue ;
};
}
function init_aux(i, n, f) {
if (i >= n) {
return /* [] */0;
}
var r = Curry._1(f, i);
return /* :: */[
r,
init_aux(i + 1 | 0, n, f)
];
}
function init(len, f) {
if (len < 0) {
throw [
Caml_builtin_exceptions.invalid_argument,
"List.init"
];
}
if (len > 10000) {
return rev_append(init_tailrec_aux(/* [] */0, 0, len, f), /* [] */0);
} else {
return init_aux(0, len, f);
}
}
function flatten(param) {
if (param) {
return Pervasives.$at(param[0], flatten(param[1]));
} else {
return /* [] */0;
}
}
function map(f, param) {
if (!param) {
return /* [] */0;
}
var r = Curry._1(f, param[0]);
return /* :: */[
r,
map(f, param[1])
];
}
function mapi(i, f, param) {
if (!param) {
return /* [] */0;
}
var r = Curry._2(f, i, param[0]);
return /* :: */[
r,
mapi(i + 1 | 0, f, param[1])
];
}
function mapi$1(f, l) {
return mapi(0, f, l);
}
function rev_map(f, l) {
var _accu = /* [] */0;
var _param = l;
while(true) {
var param = _param;
var accu = _accu;
if (!param) {
return accu;
}
_param = param[1];
_accu = /* :: */[
Curry._1(f, param[0]),
accu
];
continue ;
};
}
function iter(f, _param) {
while(true) {
var param = _param;
if (!param) {
return ;
}
Curry._1(f, param[0]);
_param = param[1];
continue ;
};
}
function iteri(f, l) {
var _i = 0;
var _param = l;
while(true) {
var param = _param;
var i = _i;
if (!param) {
return ;
}
Curry._2(f, i, param[0]);
_param = param[1];
_i = i + 1 | 0;
continue ;
};
}
function fold_left(f, _accu, _l) {
while(true) {
var l = _l;
var accu = _accu;
if (!l) {
return accu;
}
_l = l[1];
_accu = Curry._2(f, accu, l[0]);
continue ;
};
}
function fold_right(f, l, accu) {
if (l) {
return Curry._2(f, l[0], fold_right(f, l[1], accu));
} else {
return accu;
}
}
function map2(f, l1, l2) {
if (l1) {
if (l2) {
var r = Curry._2(f, l1[0], l2[0]);
return /* :: */[
r,
map2(f, l1[1], l2[1])
];
}
throw [
Caml_builtin_exceptions.invalid_argument,
"List.map2"
];
}
if (!l2) {
return /* [] */0;
}
throw [
Caml_builtin_exceptions.invalid_argument,
"List.map2"
];
}
function rev_map2(f, l1, l2) {
var _accu = /* [] */0;
var _l1 = l1;
var _l2 = l2;
while(true) {
var l2$1 = _l2;
var l1$1 = _l1;
var accu = _accu;
if (l1$1) {
if (l2$1) {
_l2 = l2$1[1];
_l1 = l1$1[1];
_accu = /* :: */[
Curry._2(f, l1$1[0], l2$1[0]),
accu
];
continue ;
}
throw [
Caml_builtin_exceptions.invalid_argument,
"List.rev_map2"
];
}
if (l2$1) {
throw [
Caml_builtin_exceptions.invalid_argument,
"List.rev_map2"
];
}
return accu;
};
}
function iter2(f, _l1, _l2) {
while(true) {
var l2 = _l2;
var l1 = _l1;
if (l1) {
if (l2) {
Curry._2(f, l1[0], l2[0]);
_l2 = l2[1];
_l1 = l1[1];
continue ;
}
throw [
Caml_builtin_exceptions.invalid_argument,
"List.iter2"
];
}
if (!l2) {
return ;
}
throw [
Caml_builtin_exceptions.invalid_argument,
"List.iter2"
];
};
}
function fold_left2(f, _accu, _l1, _l2) {
while(true) {
var l2 = _l2;
var l1 = _l1;
var accu = _accu;
if (l1) {
if (l2) {
_l2 = l2[1];
_l1 = l1[1];
_accu = Curry._3(f, accu, l1[0], l2[0]);
continue ;
}
throw [
Caml_builtin_exceptions.invalid_argument,
"List.fold_left2"
];
}
if (l2) {
throw [
Caml_builtin_exceptions.invalid_argument,
"List.fold_left2"
];
}
return accu;
};
}
function fold_right2(f, l1, l2, accu) {
if (l1) {
if (l2) {
return Curry._3(f, l1[0], l2[0], fold_right2(f, l1[1], l2[1], accu));
}
throw [
Caml_builtin_exceptions.invalid_argument,
"List.fold_right2"
];
}
if (l2) {
throw [
Caml_builtin_exceptions.invalid_argument,
"List.fold_right2"
];
}
return accu;
}
function for_all(p, _param) {
while(true) {
var param = _param;
if (!param) {
return true;
}
if (!Curry._1(p, param[0])) {
return false;
}
_param = param[1];
continue ;
};
}
function exists(p, _param) {
while(true) {
var param = _param;
if (!param) {
return false;
}
if (Curry._1(p, param[0])) {
return true;
}
_param = param[1];
continue ;
};
}
function for_all2(p, _l1, _l2) {
while(true) {
var l2 = _l2;
var l1 = _l1;
if (l1) {
if (l2) {
if (!Curry._2(p, l1[0], l2[0])) {
return false;
}
_l2 = l2[1];
_l1 = l1[1];
continue ;
}
throw [
Caml_builtin_exceptions.invalid_argument,
"List.for_all2"
];
}
if (!l2) {
return true;
}
throw [
Caml_builtin_exceptions.invalid_argument,
"List.for_all2"
];
};
}
function exists2(p, _l1, _l2) {
while(true) {
var l2 = _l2;
var l1 = _l1;
if (l1) {
if (l2) {
if (Curry._2(p, l1[0], l2[0])) {
return true;
}
_l2 = l2[1];
_l1 = l1[1];
continue ;
}
throw [
Caml_builtin_exceptions.invalid_argument,
"List.exists2"
];
}
if (!l2) {
return false;
}
throw [
Caml_builtin_exceptions.invalid_argument,
"List.exists2"
];
};
}
function mem(x, _param) {
while(true) {
var param = _param;
if (!param) {
return false;
}
if (Caml_obj.caml_equal(param[0], x)) {
return true;
}
_param = param[1];
continue ;
};
}
function memq(x, _param) {
while(true) {
var param = _param;
if (!param) {
return false;
}
if (param[0] === x) {
return true;
}
_param = param[1];
continue ;
};
}
function assoc(x, _param) {
while(true) {
var param = _param;
if (param) {
var match = param[0];
if (Caml_obj.caml_equal(match[0], x)) {
return match[1];
}
_param = param[1];
continue ;
}
throw Caml_builtin_exceptions.not_found;
};
}
function assoc_opt(x, _param) {
while(true) {
var param = _param;
if (!param) {
return ;
}
var match = param[0];
if (Caml_obj.caml_equal(match[0], x)) {
return Caml_option.some(match[1]);
}
_param = param[1];
continue ;
};
}
function assq(x, _param) {
while(true) {
var param = _param;
if (param) {
var match = param[0];
if (match[0] === x) {
return match[1];
}
_param = param[1];
continue ;
}
throw Caml_builtin_exceptions.not_found;
};
}
function assq_opt(x, _param) {
while(true) {
var param = _param;
if (!param) {
return ;
}
var match = param[0];
if (match[0] === x) {
return Caml_option.some(match[1]);
}
_param = param[1];
continue ;
};
}
function mem_assoc(x, _param) {
while(true) {
var param = _param;
if (!param) {
return false;
}
if (Caml_obj.caml_equal(param[0][0], x)) {
return true;
}
_param = param[1];
continue ;
};
}
function mem_assq(x, _param) {
while(true) {
var param = _param;
if (!param) {
return false;
}
if (param[0][0] === x) {
return true;
}
_param = param[1];
continue ;
};
}
function remove_assoc(x, param) {
if (!param) {
return /* [] */0;
}
var l = param[1];
var pair = param[0];
if (Caml_obj.caml_equal(pair[0], x)) {
return l;
} else {
return /* :: */[
pair,
remove_assoc(x, l)
];
}
}
function remove_assq(x, param) {
if (!param) {
return /* [] */0;
}
var l = param[1];
var pair = param[0];
if (pair[0] === x) {
return l;
} else {
return /* :: */[
pair,
remove_assq(x, l)
];
}
}
function find(p, _param) {
while(true) {
var param = _param;
if (param) {
var x = param[0];
if (Curry._1(p, x)) {
return x;
}
_param = param[1];
continue ;
}
throw Caml_builtin_exceptions.not_found;
};
}
function find_opt(p, _param) {
while(true) {
var param = _param;
if (!param) {
return ;
}
var x = param[0];
if (Curry._1(p, x)) {
return Caml_option.some(x);
}
_param = param[1];
continue ;
};
}
function find_all(p) {
return (function (param) {
var _accu = /* [] */0;
var _param = param;
while(true) {
var param$1 = _param;
var accu = _accu;
if (!param$1) {
return rev_append(accu, /* [] */0);
}
var l = param$1[1];
var x = param$1[0];
if (Curry._1(p, x)) {
_param = l;
_accu = /* :: */[
x,
accu
];
continue ;
}
_param = l;
continue ;
};
});
}
function partition(p, l) {
var _yes = /* [] */0;
var _no = /* [] */0;
var _param = l;
while(true) {
var param = _param;
var no = _no;
var yes = _yes;
if (!param) {
return /* tuple */[
rev_append(yes, /* [] */0),
rev_append(no, /* [] */0)
];
}
var l$1 = param[1];
var x = param[0];
if (Curry._1(p, x)) {
_param = l$1;
_yes = /* :: */[
x,
yes
];
continue ;
}
_param = l$1;
_no = /* :: */[
x,
no
];
continue ;
};
}
function split(param) {
if (!param) {
return /* tuple */[
/* [] */0,
/* [] */0
];
}
var match = param[0];
var match$1 = split(param[1]);
return /* tuple */[
/* :: */[
match[0],
match$1[0]
],
/* :: */[
match[1],
match$1[1]
]
];
}
function combine(l1, l2) {
if (l1) {
if (l2) {
return /* :: */[
/* tuple */[
l1[0],
l2[0]
],
combine(l1[1], l2[1])
];
}
throw [
Caml_builtin_exceptions.invalid_argument,
"List.combine"
];
}
if (!l2) {
return /* [] */0;
}
throw [
Caml_builtin_exceptions.invalid_argument,
"List.combine"
];
}
function merge(cmp, l1, l2) {
if (!l1) {
return l2;
}
if (!l2) {
return l1;
}
var h2 = l2[0];
var h1 = l1[0];
if (Curry._2(cmp, h1, h2) <= 0) {
return /* :: */[
h1,
merge(cmp, l1[1], l2)
];
} else {
return /* :: */[
h2,
merge(cmp, l1, l2[1])
];
}
}
function chop(_k, _l) {
while(true) {
var l = _l;
var k = _k;
if (k === 0) {
return l;
}
if (l) {
_l = l[1];
_k = k - 1 | 0;
continue ;
}
throw [
Caml_builtin_exceptions.assert_failure,
/* tuple */[
"list.ml",
262,
11
]
];
};
}
function stable_sort(cmp, l) {
var sort = function (n, l) {
if (n !== 2) {
if (n === 3 && l) {
var match = l[1];
if (match) {
var match$1 = match[1];
if (match$1) {
var x3 = match$1[0];
var x2 = match[0];
var x1 = l[0];
if (Curry._2(cmp, x1, x2) <= 0) {
if (Curry._2(cmp, x2, x3) <= 0) {
return /* :: */[
x1,
/* :: */[
x2,
/* :: */[
x3,
/* [] */0
]
]
];
} else if (Curry._2(cmp, x1, x3) <= 0) {
return /* :: */[
x1,
/* :: */[
x3,
/* :: */[
x2,
/* [] */0
]
]
];
} else {
return /* :: */[
x3,
/* :: */[
x1,
/* :: */[
x2,
/* [] */0
]
]
];
}
} else if (Curry._2(cmp, x1, x3) <= 0) {
return /* :: */[
x2,
/* :: */[
x1,
/* :: */[
x3,
/* [] */0
]
]
];
} else if (Curry._2(cmp, x2, x3) <= 0) {
return /* :: */[
x2,
/* :: */[
x3,
/* :: */[
x1,
/* [] */0
]
]
];
} else {
return /* :: */[
x3,
/* :: */[
x2,
/* :: */[
x1,
/* [] */0
]
]
];
}
}
}
}
} else if (l) {
var match$2 = l[1];
if (match$2) {
var x2$1 = match$2[0];
var x1$1 = l[0];
if (Curry._2(cmp, x1$1, x2$1) <= 0) {
return /* :: */[
x1$1,
/* :: */[
x2$1,
/* [] */0
]
];
} else {
return /* :: */[
x2$1,
/* :: */[
x1$1,
/* [] */0
]
];
}
}
}
var n1 = (n >> 1);
var n2 = n - n1 | 0;
var l2 = chop(n1, l);
var s1 = rev_sort(n1, l);
var s2 = rev_sort(n2, l2);
var _l1 = s1;
var _l2 = s2;
var _accu = /* [] */0;
while(true) {
var accu = _accu;
var l2$1 = _l2;
var l1 = _l1;
if (!l1) {
return rev_append(l2$1, accu);
}
if (!l2$1) {
return rev_append(l1, accu);
}
var h2 = l2$1[0];
var h1 = l1[0];
if (Curry._2(cmp, h1, h2) > 0) {
_accu = /* :: */[
h1,
accu
];
_l1 = l1[1];
continue ;
}
_accu = /* :: */[
h2,
accu
];
_l2 = l2$1[1];
continue ;
};
};
var rev_sort = function (n, l) {
if (n !== 2) {
if (n === 3 && l) {
var match = l[1];
if (match) {
var match$1 = match[1];
if (match$1) {
var x3 = match$1[0];
var x2 = match[0];
var x1 = l[0];
if (Curry._2(cmp, x1, x2) > 0) {
if (Curry._2(cmp, x2, x3) > 0) {
return /* :: */[
x1,
/* :: */[
x2,
/* :: */[
x3,
/* [] */0
]
]
];
} else if (Curry._2(cmp, x1, x3) > 0) {
return /* :: */[
x1,
/* :: */[
x3,
/* :: */[
x2,
/* [] */0
]
]
];
} else {
return /* :: */[
x3,
/* :: */[
x1,
/* :: */[
x2,
/* [] */0
]
]
];
}
} else if (Curry._2(cmp, x1, x3) > 0) {
return /* :: */[
x2,
/* :: */[
x1,
/* :: */[
x3,
/* [] */0
]
]
];
} else if (Curry._2(cmp, x2, x3) > 0) {
return /* :: */[
x2,
/* :: */[
x3,
/* :: */[
x1,
/* [] */0
]
]
];
} else {
return /* :: */[
x3,
/* :: */[
x2,
/* :: */[
x1,
/* [] */0
]
]
];
}
}
}
}
} else if (l) {
var match$2 = l[1];
if (match$2) {
var x2$1 = match$2[0];
var x1$1 = l[0];
if (Curry._2(cmp, x1$1, x2$1) > 0) {
return /* :: */[
x1$1,
/* :: */[
x2$1,
/* [] */0
]
];
} else {
return /* :: */[
x2$1,
/* :: */[
x1$1,
/* [] */0
]
];
}
}
}
var n1 = (n >> 1);
var n2 = n - n1 | 0;
var l2 = chop(n1, l);
var s1 = sort(n1, l);
var s2 = sort(n2, l2);
var _l1 = s1;
var _l2 = s2;
var _accu = /* [] */0;
while(true) {
var accu = _accu;
var l2$1 = _l2;
var l1 = _l1;
if (!l1) {
return rev_append(l2$1, accu);
}
if (!l2$1) {
return rev_append(l1, accu);
}
var h2 = l2$1[0];
var h1 = l1[0];
if (Curry._2(cmp, h1, h2) <= 0) {
_accu = /* :: */[
h1,
accu
];
_l1 = l1[1];
continue ;
}
_accu = /* :: */[
h2,
accu
];
_l2 = l2$1[1];
continue ;
};
};
var len = length(l);
if (len < 2) {
return l;
} else {
return sort(len, l);
}
}
function sort_uniq(cmp, l) {
var sort = function (n, l) {
if (n !== 2) {
if (n === 3 && l) {
var match = l[1];
if (match) {
var match$1 = match[1];
if (match$1) {
var x3 = match$1[0];
var x2 = match[0];
var x1 = l[0];
var c = Curry._2(cmp, x1, x2);
if (c === 0) {
var c$1 = Curry._2(cmp, x2, x3);
if (c$1 === 0) {
return /* :: */[
x2,
/* [] */0
];
} else if (c$1 < 0) {
return /* :: */[
x2,
/* :: */[
x3,
/* [] */0
]
];
} else {
return /* :: */[
x3,
/* :: */[
x2,
/* [] */0
]
];
}
}
if (c < 0) {
var c$2 = Curry._2(cmp, x2, x3);
if (c$2 === 0) {
return /* :: */[
x1,
/* :: */[
x2,
/* [] */0
]
];
}
if (c$2 < 0) {
return /* :: */[
x1,
/* :: */[
x2,
/* :: */[
x3,
/* [] */0
]
]
];
}
var c$3 = Curry._2(cmp, x1, x3);
if (c$3 === 0) {
return /* :: */[
x1,
/* :: */[
x2,
/* [] */0
]
];
} else if (c$3 < 0) {
return /* :: */[
x1,
/* :: */[
x3,
/* :: */[
x2,
/* [] */0
]
]
];
} else {
return /* :: */[
x3,
/* :: */[
x1,
/* :: */[
x2,
/* [] */0
]
]
];
}
}
var c$4 = Curry._2(cmp, x1, x3);
if (c$4 === 0) {
return /* :: */[
x2,
/* :: */[
x1,
/* [] */0
]
];
}
if (c$4 < 0) {
return /* :: */[
x2,
/* :: */[
x1,
/* :: */[
x3,
/* [] */0
]
]
];
}
var c$5 = Curry._2(cmp, x2, x3);
if (c$5 === 0) {
return /* :: */[
x2,
/* :: */[
x1,
/* [] */0
]
];
} else if (c$5 < 0) {
return /* :: */[
x2,
/* :: */[
x3,
/* :: */[
x1,
/* [] */0
]
]
];
} else {
return /* :: */[
x3,
/* :: */[
x2,
/* :: */[
x1,
/* [] */0
]
]
];
}
}
}
}
} else if (l) {
var match$2 = l[1];
if (match$2) {
var x2$1 = match$2[0];
var x1$1 = l[0];
var c$6 = Curry._2(cmp, x1$1, x2$1);
if (c$6 === 0) {
return /* :: */[
x1$1,
/* [] */0
];
} else if (c$6 < 0) {
return /* :: */[
x1$1,
/* :: */[
x2$1,
/* [] */0
]
];
} else {
return /* :: */[
x2$1,
/* :: */[
x1$1,
/* [] */0
]
];
}
}
}
var n1 = (n >> 1);
var n2 = n - n1 | 0;
var l2 = chop(n1, l);
var s1 = rev_sort(n1, l);
var s2 = rev_sort(n2, l2);
var _l1 = s1;
var _l2 = s2;
var _accu = /* [] */0;
while(true) {
var accu = _accu;
var l2$1 = _l2;
var l1 = _l1;
if (!l1) {
return rev_append(l2$1, accu);
}
if (!l2$1) {
return rev_append(l1, accu);
}
var t2 = l2$1[1];
var h2 = l2$1[0];
var t1 = l1[1];
var h1 = l1[0];
var c$7 = Curry._2(cmp, h1, h2);
if (c$7 === 0) {
_accu = /* :: */[
h1,
accu
];
_l2 = t2;
_l1 = t1;
continue ;
}
if (c$7 > 0) {
_accu = /* :: */[
h1,
accu
];
_l1 = t1;
continue ;
}
_accu = /* :: */[
h2,
accu
];
_l2 = t2;
continue ;
};
};
var rev_sort = function (n, l) {
if (n !== 2) {
if (n === 3 && l) {
var match = l[1];
if (match) {
var match$1 = match[1];
if (match$1) {
var x3 = match$1[0];
var x2 = match[0];
var x1 = l[0];
var c = Curry._2(cmp, x1, x2);
if (c === 0) {
var c$1 = Curry._2(cmp, x2, x3);
if (c$1 === 0) {
return /* :: */[
x2,
/* [] */0
];
} else if (c$1 > 0) {
return /* :: */[
x2,
/* :: */[
x3,
/* [] */0
]
];
} else {
return /* :: */[
x3,
/* :: */[
x2,
/* [] */0
]
];
}
}
if (c > 0) {
var c$2 = Curry._2(cmp, x2, x3);
if (c$2 === 0) {
return /* :: */[
x1,
/* :: */[
x2,
/* [] */0
]
];
}
if (c$2 > 0) {
return /* :: */[
x1,
/* :: */[
x2,
/* :: */[
x3,
/* [] */0
]
]
];
}
var c$3 = Curry._2(cmp, x1, x3);
if (c$3 === 0) {
return /* :: */[
x1,
/* :: */[
x2,
/* [] */0
]
];
} else if (c$3 > 0) {
return /* :: */[
x1,
/* :: */[
x3,
/* :: */[
x2,
/* [] */0
]
]
];
} else {
return /* :: */[
x3,
/* :: */[
x1,
/* :: */[
x2,
/* [] */0
]
]
];
}
}
var c$4 = Curry._2(cmp, x1, x3);
if (c$4 === 0) {
return /* :: */[
x2,
/* :: */[
x1,
/* [] */0
]
];
}
if (c$4 > 0) {
return /* :: */[
x2,
/* :: */[
x1,
/* :: */[
x3,
/* [] */0
]
]
];
}
var c$5 = Curry._2(cmp, x2, x3);
if (c$5 === 0) {
return /* :: */[
x2,
/* :: */[
x1,
/* [] */0
]
];
} else if (c$5 > 0) {
return /* :: */[
x2,
/* :: */[
x3,
/* :: */[
x1,
/* [] */0
]
]
];
} else {
return /* :: */[
x3,
/* :: */[
x2,
/* :: */[
x1,
/* [] */0
]
]
];
}
}
}
}
} else if (l) {
var match$2 = l[1];
if (match$2) {
var x2$1 = match$2[0];
var x1$1 = l[0];
var c$6 = Curry._2(cmp, x1$1, x2$1);
if (c$6 === 0) {
return /* :: */[
x1$1,
/* [] */0
];
} else if (c$6 > 0) {
return /* :: */[
x1$1,
/* :: */[
x2$1,
/* [] */0
]
];
} else {
return /* :: */[
x2$1,
/* :: */[
x1$1,
/* [] */0
]
];
}
}
}
var n1 = (n >> 1);
var n2 = n - n1 | 0;
var l2 = chop(n1, l);
var s1 = sort(n1, l);
var s2 = sort(n2, l2);
var _l1 = s1;
var _l2 = s2;
var _accu = /* [] */0;
while(true) {
var accu = _accu;
var l2$1 = _l2;
var l1 = _l1;
if (!l1) {
return rev_append(l2$1, accu);
}
if (!l2$1) {
return rev_append(l1, accu);
}
var t2 = l2$1[1];
var h2 = l2$1[0];
var t1 = l1[1];
var h1 = l1[0];
var c$7 = Curry._2(cmp, h1, h2);
if (c$7 === 0) {
_accu = /* :: */[
h1,
accu
];
_l2 = t2;
_l1 = t1;
continue ;
}
if (c$7 < 0) {
_accu = /* :: */[
h1,
accu
];
_l1 = t1;
continue ;
}
_accu = /* :: */[
h2,
accu
];
_l2 = t2;
continue ;
};
};
var len = length(l);
if (len < 2) {
return l;
} else {
return sort(len, l);
}
}
function compare_lengths(_l1, _l2) {
while(true) {
var l2 = _l2;
var l1 = _l1;
if (!l1) {
if (l2) {
return -1;
} else {
return 0;
}
}
if (!l2) {
return 1;
}
_l2 = l2[1];
_l1 = l1[1];
continue ;
};
}
function compare_length_with(_l, _n) {
while(true) {
var n = _n;
var l = _l;
if (!l) {
if (n === 0) {
return 0;
} else if (n > 0) {
return -1;
} else {
return 1;
}
}
if (n <= 0) {
return 1;
}
_n = n - 1 | 0;
_l = l[1];
continue ;
};
}
var append = Pervasives.$at;
var concat = flatten;
var filter = find_all;
var sort = stable_sort;
var fast_sort = stable_sort;
exports.length = length;
exports.compare_lengths = compare_lengths;
exports.compare_length_with = compare_length_with;
exports.cons = cons;
exports.hd = hd;
exports.tl = tl;
exports.nth = nth;
exports.nth_opt = nth_opt;
exports.rev = rev;
exports.init = init;
exports.append = append;
exports.rev_append = rev_append;
exports.concat = concat;
exports.flatten = flatten;
exports.iter = iter;
exports.iteri = iteri;
exports.map = map;
exports.mapi = mapi$1;
exports.rev_map = rev_map;
exports.fold_left = fold_left;
exports.fold_right = fold_right;
exports.iter2 = iter2;
exports.map2 = map2;
exports.rev_map2 = rev_map2;
exports.fold_left2 = fold_left2;
exports.fold_right2 = fold_right2;
exports.for_all = for_all;
exports.exists = exists;
exports.for_all2 = for_all2;
exports.exists2 = exists2;
exports.mem = mem;
exports.memq = memq;
exports.find = find;
exports.find_opt = find_opt;
exports.filter = filter;
exports.find_all = find_all;
exports.partition = partition;
exports.assoc = assoc;
exports.assoc_opt = assoc_opt;
exports.assq = assq;
exports.assq_opt = assq_opt;
exports.mem_assoc = mem_assoc;
exports.mem_assq = mem_assq;
exports.remove_assoc = remove_assoc;
exports.remove_assq = remove_assq;
exports.split = split;
exports.combine = combine;
exports.sort = sort;
exports.stable_sort = stable_sort;
exports.fast_sort = fast_sort;
exports.sort_uniq = sort_uniq;
exports.merge = merge;
/* No side effect */