// Generated by purs version 0.14.5
"use strict";
var Data_Ordering = require("../Data.Ordering/index.js");
var Type_Proxy = require("../Type.Proxy/index.js");
var OProxy = (function () {
    function OProxy() {

    };
    OProxy.value = new OProxy();
    return OProxy;
})();
var reflectOrdering = function (dict) {
    return dict.reflectOrdering;
};
var isOrderingLT = {
    reflectOrdering: function (v) {
        return Data_Ordering.LT.value;
    }
};
var isOrderingGT = {
    reflectOrdering: function (v) {
        return Data_Ordering.GT.value;
    }
};
var isOrderingEQ = {
    reflectOrdering: function (v) {
        return Data_Ordering.EQ.value;
    }
};
var reifyOrdering = function (v) {
    return function (f) {
        if (v instanceof Data_Ordering.LT) {
            return f(isOrderingLT)(Type_Proxy["Proxy"].value);
        };
        if (v instanceof Data_Ordering.EQ) {
            return f(isOrderingEQ)(Type_Proxy["Proxy"].value);
        };
        if (v instanceof Data_Ordering.GT) {
            return f(isOrderingGT)(Type_Proxy["Proxy"].value);
        };
        throw new Error("Failed pattern match at Type.Data.Ordering (line 35, column 1 - line 35, column 91): " + [ v.constructor.name, f.constructor.name ]);
    };
};
var invertOrderingLT = {};
var invertOrderingGT = {};
var invertOrderingEQ = {};
var invert = function (dictInvert) {
    return function (v) {
        return Type_Proxy["Proxy"].value;
    };
};
var equalsLTLT = {};
var equalsLTGT = {};
var equalsLTEQ = {};
var equalsGTLT = {};
var equalsGTGT = {};
var equalsGTEQ = {};
var equalsEQLT = {};
var equalsEQGT = {};
var equalsEQEQ = {};
var equals = function (dictEquals) {
    return function (v) {
        return function (v1) {
            return Type_Proxy["Proxy"].value;
        };
    };
};
var appendOrderingLT = {};
var appendOrderingGT = {};
var appendOrderingEQ = {};
var append = function (dictAppend) {
    return function (v) {
        return function (v1) {
            return Type_Proxy["Proxy"].value;
        };
    };
};
module.exports = {
    OProxy: OProxy,
    reflectOrdering: reflectOrdering,
    reifyOrdering: reifyOrdering,
    append: append,
    invert: invert,
    equals: equals,
    isOrderingLT: isOrderingLT,
    isOrderingEQ: isOrderingEQ,
    isOrderingGT: isOrderingGT,
    appendOrderingLT: appendOrderingLT,
    appendOrderingEQ: appendOrderingEQ,
    appendOrderingGT: appendOrderingGT,
    invertOrderingLT: invertOrderingLT,
    invertOrderingEQ: invertOrderingEQ,
    invertOrderingGT: invertOrderingGT,
    equalsEQEQ: equalsEQEQ,
    equalsLTLT: equalsLTLT,
    equalsGTGT: equalsGTGT,
    equalsEQLT: equalsEQLT,
    equalsEQGT: equalsEQGT,
    equalsLTEQ: equalsLTEQ,
    equalsLTGT: equalsLTGT,
    equalsGTLT: equalsGTLT,
    equalsGTEQ: equalsGTEQ
};
