// Generated by purs version 0.13.6 "use strict"; var $foreign = require("./foreign.js"); var Data_Eq = require("../Data.Eq/index.js"); var Data_Ordering = require("../Data.Ordering/index.js"); var Ord = function (Eq0, compare) { this.Eq0 = Eq0; this.compare = compare; }; var ordNumber = new Ord(function ($dollar__unused) { return Data_Eq.eqNumber; }, $foreign.ordNumberImpl(Data_Ordering.LT.value)(Data_Ordering.EQ.value)(Data_Ordering.GT.value)); var ordInt = new Ord(function ($dollar__unused) { return Data_Eq.eqInt; }, $foreign.ordIntImpl(Data_Ordering.LT.value)(Data_Ordering.EQ.value)(Data_Ordering.GT.value)); var ordChar = new Ord(function ($dollar__unused) { return Data_Eq.eqChar; }, $foreign.ordCharImpl(Data_Ordering.LT.value)(Data_Ordering.EQ.value)(Data_Ordering.GT.value)); var compare = function (dict) { return dict.compare; }; var comparing = function (dictOrd) { return function (f) { return function (x) { return function (y) { return compare(dictOrd)(f(x))(f(y)); }; }; }; }; var greaterThan = function (dictOrd) { return function (a1) { return function (a2) { var v = compare(dictOrd)(a1)(a2); if (v instanceof Data_Ordering.GT) { return true; }; return false; }; }; }; var greaterThanOrEq = function (dictOrd) { return function (a1) { return function (a2) { var v = compare(dictOrd)(a1)(a2); if (v instanceof Data_Ordering.LT) { return false; }; return true; }; }; }; var lessThan = function (dictOrd) { return function (a1) { return function (a2) { var v = compare(dictOrd)(a1)(a2); if (v instanceof Data_Ordering.LT) { return true; }; return false; }; }; }; var lessThanOrEq = function (dictOrd) { return function (a1) { return function (a2) { var v = compare(dictOrd)(a1)(a2); if (v instanceof Data_Ordering.GT) { return false; }; return true; }; }; }; var max = function (dictOrd) { return function (x) { return function (y) { var v = compare(dictOrd)(x)(y); if (v instanceof Data_Ordering.LT) { return y; }; if (v instanceof Data_Ordering.EQ) { return x; }; if (v instanceof Data_Ordering.GT) { return x; }; throw new Error("Failed pattern match at Data.Ord (line 167, column 3 - line 170, column 12): " + [ v.constructor.name ]); }; }; }; var min = function (dictOrd) { return function (x) { return function (y) { var v = compare(dictOrd)(x)(y); if (v instanceof Data_Ordering.LT) { return x; }; if (v instanceof Data_Ordering.EQ) { return x; }; if (v instanceof Data_Ordering.GT) { return y; }; throw new Error("Failed pattern match at Data.Ord (line 158, column 3 - line 161, column 12): " + [ v.constructor.name ]); }; }; }; var clamp = function (dictOrd) { return function (low) { return function (hi) { return function (x) { return min(dictOrd)(hi)(max(dictOrd)(low)(x)); }; }; }; }; var between = function (dictOrd) { return function (low) { return function (hi) { return function (x) { if (lessThan(dictOrd)(x)(low)) { return false; }; if (greaterThan(dictOrd)(x)(hi)) { return false; }; return true; }; }; }; }; module.exports = { Ord: Ord, compare: compare, lessThan: lessThan, lessThanOrEq: lessThanOrEq, greaterThan: greaterThan, greaterThanOrEq: greaterThanOrEq, comparing: comparing, min: min, max: max, clamp: clamp, between: between, ordInt: ordInt, ordNumber: ordNumber, ordChar: ordChar };