UNPKG

@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

366 lines (339 loc) 7.06 kB
import * as Caml from "./caml.js"; import * as Curry from "./curry.js"; import * as Caml_option from "./caml_option.js"; import * as Belt_SortArray from "./belt_SortArray.js"; import * as Belt_internalAVLtree from "./belt_internalAVLtree.js"; function add(t, x, data) { if (t === undefined) { return Belt_internalAVLtree.singleton(x, data); } var k = t.k; if (x === k) { return Belt_internalAVLtree.updateValue(t, data); } var v = t.v; if (x < k) { return Belt_internalAVLtree.bal(add(t.l, x, data), k, v, t.r); } else { return Belt_internalAVLtree.bal(t.l, k, v, add(t.r, x, data)); } } function get(_n, x) { while(true) { var n = _n; if (n === undefined) { return ; } var v = n.k; if (x === v) { return Caml_option.some(n.v); } _n = x < v ? n.l : n.r; continue ; }; } function getUndefined(_n, x) { while(true) { var n = _n; if (n === undefined) { return ; } var v = n.k; if (x === v) { return n.v; } _n = x < v ? n.l : n.r; continue ; }; } function getExn(_n, x) { while(true) { var n = _n; if (n !== undefined) { var v = n.k; if (x === v) { return n.v; } _n = x < v ? n.l : n.r; continue ; } throw { RE_EXN_ID: "Not_found", Error: new Error() }; }; } function getWithDefault(_n, x, def) { while(true) { var n = _n; if (n === undefined) { return def; } var v = n.k; if (x === v) { return n.v; } _n = x < v ? n.l : n.r; continue ; }; } function has(_n, x) { while(true) { var n = _n; if (n === undefined) { return false; } var v = n.k; if (x === v) { return true; } _n = x < v ? n.l : n.r; continue ; }; } function remove(n, x) { if (n === undefined) { return n; } var v = n.k; var l = n.l; var r = n.r; if (x !== v) { if (x < v) { return Belt_internalAVLtree.bal(remove(l, x), v, n.v, r); } else { return Belt_internalAVLtree.bal(l, v, n.v, remove(r, x)); } } if (l === undefined) { return r; } if (r === undefined) { return l; } var kr = { contents: r.k }; var vr = { contents: r.v }; var r$1 = Belt_internalAVLtree.removeMinAuxWithRef(r, kr, vr); return Belt_internalAVLtree.bal(l, kr.contents, vr.contents, r$1); } function splitAux(x, n) { var v = n.k; var d = n.v; var l = n.l; var r = n.r; if (x === v) { return [ l, Caml_option.some(d), r ]; } if (x < v) { if (l === undefined) { return [ undefined, undefined, n ]; } var match = splitAux(x, l); return [ match[0], match[1], Belt_internalAVLtree.join(match[2], v, d, r) ]; } if (r === undefined) { return [ n, undefined, undefined ]; } var match$1 = splitAux(x, r); return [ Belt_internalAVLtree.join(l, v, d, match$1[0]), match$1[1], match$1[2] ]; } function split(x, n) { if (n !== undefined) { return splitAux(x, n); } else { return [ undefined, undefined, undefined ]; } } function mergeU(s1, s2, f) { if (s1 !== undefined) { if (s1.h >= ( s2 !== undefined ? s2.h : 0 )) { var v1 = s1.k; var d1 = s1.v; var l1 = s1.l; var r1 = s1.r; var match = split(v1, s2); return Belt_internalAVLtree.concatOrJoin(mergeU(l1, match[0], f), v1, f(v1, Caml_option.some(d1), match[1]), mergeU(r1, match[2], f)); } } else if (s2 === undefined) { return ; } var v2 = s2.k; var d2 = s2.v; var l2 = s2.l; var r2 = s2.r; var match$1 = split(v2, s1); return Belt_internalAVLtree.concatOrJoin(mergeU(match$1[0], l2, f), v2, f(v2, match$1[1], Caml_option.some(d2)), mergeU(match$1[2], r2, f)); } function merge(s1, s2, f) { return mergeU(s1, s2, Curry.__3(f)); } function compareAux(_e1, _e2, vcmp) { while(true) { var e2 = _e2; var e1 = _e1; if (!e1) { return 0; } if (!e2) { return 0; } var h2 = e2.hd; var h1 = e1.hd; var c = Caml.int_compare(h1.k, h2.k); if (c !== 0) { return c; } var cx = vcmp(h1.v, h2.v); if (cx !== 0) { return cx; } _e2 = Belt_internalAVLtree.stackAllLeft(h2.r, e2.tl); _e1 = Belt_internalAVLtree.stackAllLeft(h1.r, e1.tl); continue ; }; } function cmpU(s1, s2, cmp) { var len1 = Belt_internalAVLtree.size(s1); var len2 = Belt_internalAVLtree.size(s2); if (len1 === len2) { return compareAux(Belt_internalAVLtree.stackAllLeft(s1, /* [] */0), Belt_internalAVLtree.stackAllLeft(s2, /* [] */0), cmp); } else if (len1 < len2) { return -1; } else { return 1; } } function cmp(s1, s2, f) { return cmpU(s1, s2, Curry.__2(f)); } function eqAux(_e1, _e2, eq) { while(true) { var e2 = _e2; var e1 = _e1; if (!e1) { return true; } if (!e2) { return true; } var h2 = e2.hd; var h1 = e1.hd; if (!(h1.k === h2.k && eq(h1.v, h2.v))) { return false; } _e2 = Belt_internalAVLtree.stackAllLeft(h2.r, e2.tl); _e1 = Belt_internalAVLtree.stackAllLeft(h1.r, e1.tl); continue ; }; } function eqU(s1, s2, eq) { var len1 = Belt_internalAVLtree.size(s1); var len2 = Belt_internalAVLtree.size(s2); if (len1 === len2) { return eqAux(Belt_internalAVLtree.stackAllLeft(s1, /* [] */0), Belt_internalAVLtree.stackAllLeft(s2, /* [] */0), eq); } else { return false; } } function eq(s1, s2, f) { return eqU(s1, s2, Curry.__2(f)); } function addMutate(t, x, data) { if (t === undefined) { return Belt_internalAVLtree.singleton(x, data); } var k = t.k; if (x === k) { t.k = x; t.v = data; return t; } var l = t.l; var r = t.r; if (x < k) { var ll = addMutate(l, x, data); t.l = ll; } else { t.r = addMutate(r, x, data); } return Belt_internalAVLtree.balMutate(t); } function fromArray(xs) { var len = xs.length; if (len === 0) { return ; } var next = Belt_SortArray.strictlySortedLengthU(xs, (function (param, param$1) { return param[0] < param$1[0]; })); var result; if (next >= 0) { result = Belt_internalAVLtree.fromSortedArrayAux(xs, 0, next); } else { next = -next | 0; result = Belt_internalAVLtree.fromSortedArrayRevAux(xs, next - 1 | 0, next); } for(var i = next; i < len; ++i){ var match = xs[i]; result = addMutate(result, match[0], match[1]); } return result; } var N; var A; var S; export { N , A , S , add , get , getUndefined , getExn , getWithDefault , has , remove , splitAux , split , mergeU , merge , compareAux , cmpU , cmp , eqAux , eqU , eq , addMutate , fromArray , } /* No side effect */