UNPKG

bs-platform

Version:

bucklescript compiler, ocaml standard libary by bucklescript and its required runtime support

349 lines (319 loc) 5.83 kB
'use strict'; var Js_vector = require("./js_vector.js"); var Caml_option = require("./caml_option.js"); function length(l) { var _len = 0; var _param = l; while(true) { var param = _param; var len = _len; if (param) { _param = param[1]; _len = len + 1 | 0; continue ; } else { return len; } }; } function cons(x, xs) { return /* :: */[ x, xs ]; } function isEmpty(x) { return x === /* [] */0; } function hd(param) { if (param) { return Caml_option.some(param[0]); } } function tl(param) { if (param) { return param[1]; } } function nth(l, n) { if (n < 0) { return undefined; } else { var _l = l; var _n = n; while(true) { var n$1 = _n; var l$1 = _l; if (l$1) { if (n$1 === 0) { return Caml_option.some(l$1[0]); } else { _n = n$1 - 1 | 0; _l = l$1[1]; continue ; } } else { return undefined; } }; } } function revAppend(_l1, _l2) { while(true) { var l2 = _l2; var l1 = _l1; if (l1) { _l2 = /* :: */[ l1[0], l2 ]; _l1 = l1[1]; continue ; } else { return l2; } }; } function rev(l) { return revAppend(l, /* [] */0); } function mapRevAux(f, _acc, _ls) { while(true) { var ls = _ls; var acc = _acc; if (ls) { _ls = ls[1]; _acc = /* :: */[ f(ls[0]), acc ]; continue ; } else { return acc; } }; } function mapRev(f, ls) { return mapRevAux(f, /* [] */0, ls); } function map(f, ls) { return revAppend(mapRevAux(f, /* [] */0, ls), /* [] */0); } function iter(f, _param) { while(true) { var param = _param; if (param) { f(param[0]); _param = param[1]; continue ; } else { return /* () */0; } }; } function iteri(f, l) { var _i = 0; var f$1 = f; var _param = l; while(true) { var param = _param; var i = _i; if (param) { f$1(i, param[0]); _param = param[1]; _i = i + 1 | 0; continue ; } else { return /* () */0; } }; } function foldLeft(f, _accu, _l) { while(true) { var l = _l; var accu = _accu; if (l) { _l = l[1]; _accu = f(accu, l[0]); continue ; } else { return accu; } }; } function tailLoop(f, _acc, _param) { while(true) { var param = _param; var acc = _acc; if (param) { _param = param[1]; _acc = f(param[0], acc); continue ; } else { return acc; } }; } function foldRight(f, l, init) { var loop = function (n, param) { if (param) { var t = param[1]; var h = param[0]; if (n < 1000) { return f(h, loop(n + 1 | 0, t)); } else { return f(h, tailLoop(f, init, revAppend(t, /* [] */0))); } } else { return init; } }; return loop(0, l); } function flatten(lx) { var _acc = /* [] */0; var _lx = lx; while(true) { var lx$1 = _lx; var acc = _acc; if (lx$1) { _lx = lx$1[1]; _acc = revAppend(lx$1[0], acc); continue ; } else { return revAppend(acc, /* [] */0); } }; } function filterRevAux(f, _acc, _xs) { while(true) { var xs = _xs; var acc = _acc; if (xs) { var ys = xs[1]; var y = xs[0]; var match = f(y); _xs = ys; if (match) { _acc = /* :: */[ y, acc ]; continue ; } else { continue ; } } else { return acc; } }; } function filter(f, xs) { return revAppend(filterRevAux(f, /* [] */0, xs), /* [] */0); } function filterMapRevAux(f, _acc, _xs) { while(true) { var xs = _xs; var acc = _acc; if (xs) { var ys = xs[1]; var match = f(xs[0]); _xs = ys; if (match !== undefined) { _acc = /* :: */[ Caml_option.valFromOption(match), acc ]; continue ; } else { continue ; } } else { return acc; } }; } function filterMap(f, xs) { return revAppend(filterMapRevAux(f, /* [] */0, xs), /* [] */0); } function countBy(f, xs) { var f$1 = f; var _acc = 0; var _xs = xs; while(true) { var xs$1 = _xs; var acc = _acc; if (xs$1) { _xs = xs$1[1]; _acc = f$1(xs$1[0]) ? acc + 1 | 0 : acc; continue ; } else { return acc; } }; } function init(n, f) { return Js_vector.toList(Js_vector.init(n, f)); } function toVector(xs) { if (xs) { var a = new Array(length(xs)); var _i = 0; var _param = xs; while(true) { var param = _param; var i = _i; if (param) { a[i] = param[0]; _param = param[1]; _i = i + 1 | 0; continue ; } else { return a; } }; } else { return /* array */[]; } } function equal(cmp, _xs, _ys) { while(true) { var ys = _ys; var xs = _xs; if (xs) { if (ys && cmp(xs[0], ys[0])) { _ys = ys[1]; _xs = xs[1]; continue ; } else { return false; } } else if (ys) { return false; } else { return true; } }; } exports.length = length; exports.cons = cons; exports.isEmpty = isEmpty; exports.hd = hd; exports.tl = tl; exports.nth = nth; exports.revAppend = revAppend; exports.rev = rev; exports.mapRev = mapRev; exports.map = map; exports.iter = iter; exports.iteri = iteri; exports.foldLeft = foldLeft; exports.foldRight = foldRight; exports.flatten = flatten; exports.filter = filter; exports.filterMap = filterMap; exports.countBy = countBy; exports.init = init; exports.toVector = toVector; exports.equal = equal; /* No side effect */