nikita-volkov / typeclasses / Typeclasses.Classes.Comparison

Comparison typeclass definition and its instances for basic types.

Definition


type alias Comparison a =
{ equality : Typeclasses.Classes.Equality.Equality a
, compare : a -> a -> Basics.Order
, lt : a -> a -> Basics.Bool
, le : a -> a -> Basics.Bool
, gt : a -> a -> Basics.Bool
, ge : a -> a -> Basics.Bool
, min : a -> a -> a
, max : a -> a -> a 
}

Explicit typeclass which implements comparison operations for type a.

Construction utilities

compare : (a -> a -> Basics.Order) -> Comparison a

Construct an instance from just a compare function.

equalityAndLt : Typeclasses.Classes.Equality.Equality a -> (a -> a -> Basics.Bool) -> Comparison a

Construct an instance from an instance of equality and a lesser-than function.

comparable : Comparison comparable

Construct an instance for a comparable type using the compiler-generated definitions.

Instance transformation utilities

map : (a -> b) -> (b -> a) -> Comparison a -> Comparison b

Map over the owner type of an instance to produce a new instance.

You need to provide both a covariant and a contravariant mapping (i.e., (a -> b) and (b -> a)).

Instances

int : Comparison Basics.Int

Instance for Int.

float : Comparison Basics.Float

Instance for Float.