Type-level compare for totally ordered data types.
Example
:kind! Eval (Compare "a" "b")Eval (Compare "a" "b") :: Ordering= LT
:kind! Eval (Compare '[1, 2, 3] '[1, 2, 3])Eval (Compare '[1, 2, 3] '[1, 2, 3]) :: Ordering= EQ
:kind! Eval (Compare '[1, 3] '[1, 2])Eval (Compare '[1, 3] '[1, 2]) :: Ordering= GT
Instances27Eval, …
type Eval (Compare 'Nothing 'Nothing) = 'EQDefined in first-class-families-0.8.1.0 · Fcf.Class.Ordtype Eval (Compare 'Nothing ('Just _b)) = 'LTDefined in first-class-families-0.8.1.0 · Fcf.Class.Ordtype Eval (Compare 'EQ 'GT) = 'LTDefined in first-class-families-0.8.1.0 · Fcf.Class.Ordtype Eval (Compare 'EQ 'LT) = 'GTDefined in first-class-families-0.8.1.0 · Fcf.Class.Ordtype Eval (Compare 'False 'True) = 'GTDefined in first-class-families-0.8.1.0 · Fcf.Class.Ordtype Eval (Compare 'GT 'EQ) = 'GTDefined in first-class-families-0.8.1.0 · Fcf.Class.Ordtype Eval (Compare 'GT 'LT) = 'GTDefined in first-class-families-0.8.1.0 · Fcf.Class.Ordtype Eval (Compare 'LT 'EQ) = 'LTDefined in first-class-families-0.8.1.0 · Fcf.Class.Ordtype Eval (Compare 'LT 'GT) = 'LTDefined in first-class-families-0.8.1.0 · Fcf.Class.Ordtype Eval (Compare 'True 'False) = 'GTDefined in first-class-families-0.8.1.0 · Fcf.Class.Ordtype Eval (Compare '(a3, a4) '(b1, b2)) = Eval (Compare a3 b1) <> Eval (Compare a4 b2)Defined in first-class-families-0.8.1.0 · Fcf.Class.Ordtype Eval (Compare '(a4, a5, a6) '(b1, b2, b3)) = (Eval (Compare a4 b1) <> Eval (Compare a5 b2)) <> Eval (Compare a6 b3)Defined in first-class-families-0.8.1.0 · Fcf.Class.Ordtype Eval (Compare '[] '[]) = 'EQDefined in first-class-families-0.8.1.0 · Fcf.Class.Ordtype Eval (Compare '[] (_y ': _ys)) = 'LTDefined in first-class-families-0.8.1.0 · Fcf.Class.Ordtype Eval (Compare ('Left _a) ('Right _b)) = 'LTDefined in first-class-families-0.8.1.0 · Fcf.Class.Ordtype Eval (Compare ('Left a2) ('Left b2)) = Eval (Compare a2 b2)Defined in first-class-families-0.8.1.0 · Fcf.Class.Ordtype Eval (Compare ('Right _a) ('Left _b)) = 'GTDefined in first-class-families-0.8.1.0 · Fcf.Class.Ordtype Eval (Compare ('Right a3) ('Right b)) = Eval (Compare a3 b)Defined in first-class-families-0.8.1.0 · Fcf.Class.Ordtype Eval (Compare ('Just _a) 'Nothing) = 'GTDefined in first-class-families-0.8.1.0 · Fcf.Class.Ordtype Eval (Compare ('Just a2) ('Just b)) = Eval (Compare a2 b)Defined in first-class-families-0.8.1.0 · Fcf.Class.Ordtype Eval (Compare (_x ': _xs) '[]) = 'GTDefined in first-class-families-0.8.1.0 · Fcf.Class.Ordtype Eval (Compare (x ': xs) (y ': ys)) = Eval (Compare x y) <> Eval (Compare xs ys)Defined in first-class-families-0.8.1.0 · Fcf.Class.Ordtype Eval (Compare a a) = 'EQDefined in first-class-families-0.8.1.0 · Fcf.Class.Ordtype Eval (Compare a a) = 'EQDefined in first-class-families-0.8.1.0 · Fcf.Class.Ordtype Eval (Compare a b) = CmpSymbol a bDefined in first-class-families-0.8.1.0 · Fcf.Class.Ordtype Eval (Compare a b) = CmpNat a bDefined in first-class-families-0.8.1.0 · Fcf.Class.Ordtype Eval (Compare a b) = 'EQDefined in first-class-families-0.8.1.0 · Fcf.Class.Ord