'use strict'; var Curry = require("./curry.js"); var Caml_option = require("./caml_option.js"); function keepU(opt, p) { if (opt !== undefined && p(Caml_option.valFromOption(opt))) { return opt; } } function keep(opt, p) { return keepU(opt, Curry.__1(p)); } function forEachU(opt, f) { if (opt !== undefined) { return f(Caml_option.valFromOption(opt)); } } function forEach(opt, f) { forEachU(opt, Curry.__1(f)); } function getExn(x) { if (x !== undefined) { return Caml_option.valFromOption(x); } throw { RE_EXN_ID: "Not_found", Error: new Error() }; } function mapWithDefaultU(opt, $$default, f) { if (opt !== undefined) { return f(Caml_option.valFromOption(opt)); } else { return $$default; } } function mapWithDefault(opt, $$default, f) { return mapWithDefaultU(opt, $$default, Curry.__1(f)); } function mapU(opt, f) { if (opt !== undefined) { return Caml_option.some(f(Caml_option.valFromOption(opt))); } } function map(opt, f) { return mapU(opt, Curry.__1(f)); } function flatMapU(opt, f) { if (opt !== undefined) { return f(Caml_option.valFromOption(opt)); } } function flatMap(opt, f) { return flatMapU(opt, Curry.__1(f)); } function getWithDefault(opt, $$default) { if (opt !== undefined) { return Caml_option.valFromOption(opt); } else { return $$default; } } function orElse(opt, other) { if (opt !== undefined) { return opt; } else { return other; } } function isSome(param) { return param !== undefined; } function isNone(x) { return x === undefined; } function eqU(a, b, f) { if (a !== undefined) { if (b !== undefined) { return f(Caml_option.valFromOption(a), Caml_option.valFromOption(b)); } else { return false; } } else { return b === undefined; } } function eq(a, b, f) { return eqU(a, b, Curry.__2(f)); } function cmpU(a, b, f) { if (a !== undefined) { if (b !== undefined) { return f(Caml_option.valFromOption(a), Caml_option.valFromOption(b)); } else { return 1; } } else if (b !== undefined) { return -1; } else { return 0; } } function cmp(a, b, f) { return cmpU(a, b, Curry.__2(f)); } exports.keepU = keepU; exports.keep = keep; exports.forEachU = forEachU; exports.forEach = forEach; exports.getExn = getExn; exports.mapWithDefaultU = mapWithDefaultU; exports.mapWithDefault = mapWithDefault; exports.mapU = mapU; exports.map = map; exports.flatMapU = flatMapU; exports.flatMap = flatMap; exports.getWithDefault = getWithDefault; exports.orElse = orElse; exports.isSome = isSome; exports.isNone = isNone; exports.eqU = eqU; exports.eq = eq; exports.cmpU = cmpU; exports.cmp = cmp; /* No side effect */