Safe Haskell | Safe |
---|---|
Language | Haskell2010 |
Fcf.Class.Ord
Description
Equality and ordering.
Note that equality doesn't really require a class,
it can be defined uniformly as TyEq
.
Order
data Compare :: a -> a -> Exp Ordering Source #
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
Instances
type Eval (Compare 'False 'True) Source # | |
Defined in Fcf.Class.Ord | |
type Eval (Compare 'True 'False) Source # | |
Defined in Fcf.Class.Ord | |
type Eval (Compare a a :: Ordering -> Type) Source # | |
Defined in Fcf.Class.Ord | |
type Eval (Compare (_x ': _xs) ('[] :: [a]) :: Ordering -> Type) Source # | |
Defined in Fcf.Class.Ord | |
type Eval (Compare ('[] :: [k]) (_y ': _ys) :: Ordering -> Type) Source # | |
Defined in Fcf.Class.Ord | |
type Eval (Compare (x ': xs) (y ': ys) :: Ordering -> Type) Source # | |
type Eval (Compare ('[] :: [k]) ('[] :: [k]) :: Ordering -> Type) Source # | |
Defined in Fcf.Class.Ord | |
type Eval (Compare ('Just _a) ('Nothing :: Maybe a) :: Ordering -> Type) Source # | |
Defined in Fcf.Class.Ord | |
type Eval (Compare ('Nothing :: Maybe a) ('Just _b) :: Ordering -> Type) Source # | |
Defined in Fcf.Class.Ord | |
type Eval (Compare ('Just a2) ('Just b) :: Ordering -> Type) Source # | |
Defined in Fcf.Class.Ord | |
type Eval (Compare ('Nothing :: Maybe a) ('Nothing :: Maybe a) :: Ordering -> Type) Source # | |
Defined in Fcf.Class.Ord | |
type Eval (Compare 'LT 'EQ) Source # | |
Defined in Fcf.Class.Ord | |
type Eval (Compare 'LT 'GT) Source # | |
Defined in Fcf.Class.Ord | |
type Eval (Compare 'EQ 'LT) Source # | |
Defined in Fcf.Class.Ord | |
type Eval (Compare 'EQ 'GT) Source # | |
Defined in Fcf.Class.Ord | |
type Eval (Compare 'GT 'LT) Source # | |
Defined in Fcf.Class.Ord | |
type Eval (Compare 'GT 'EQ) Source # | |
Defined in Fcf.Class.Ord | |
type Eval (Compare a a :: Ordering -> Type) Source # | |
Defined in Fcf.Class.Ord | |
type Eval (Compare ('Right _a :: Either a b) ('Left _b :: Either a b) :: Ordering -> Type) Source # | |
Defined in Fcf.Class.Ord | |
type Eval (Compare ('Left _a :: Either a b) ('Right _b :: Either a b) :: Ordering -> Type) Source # | |
Defined in Fcf.Class.Ord | |
type Eval (Compare ('Right a3 :: Either a2 a1) ('Right b :: Either a2 a1) :: Ordering -> Type) Source # | |
Defined in Fcf.Class.Ord | |
type Eval (Compare ('Left a2 :: Either a1 b1) ('Left b2 :: Either a1 b1) :: Ordering -> Type) Source # | |
Defined in Fcf.Class.Ord | |
type Eval (Compare a b :: Ordering -> Type) Source # | |
Defined in Fcf.Class.Ord | |
type Eval (Compare a b :: Ordering -> Type) Source # | |
Defined in Fcf.Class.Ord | |
type Eval (Compare a b :: Ordering -> Type) Source # | |
Defined in Fcf.Class.Ord | |
type Eval (Compare '(a3, a4) '(b1, b2) :: Ordering -> Type) Source # | |
type Eval (Compare '(a4, a5, a6) '(b1, b2, b3) :: Ordering -> Type) Source # | |
data (<=) :: a -> a -> Exp Bool Source #
"Smaller than or equal to". Type-level version of (
.<=
)
Example
>>>
:kind! Eval ("b" <= "a")
Eval ("b" <= "a") :: Bool = 'False
data (>=) :: a -> a -> Exp Bool Source #
"Greater than or equal to". Type-level version of (
.>=
)
Example
>>>
:kind! Eval ("b" >= "a")
Eval ("b" >= "a") :: Bool = 'True
data (<) :: a -> a -> Exp Bool Source #
"Smaller than". Type-level version of (
.<
)
Example
>>>
:kind! Eval ("a" < "b")
Eval ("a" < "b") :: Bool = 'True
data (>) :: a -> a -> Exp Bool Source #
"Greater than". Type-level version of (
.>
)
Example
>>>
:kind! Eval ("b" > "a")
Eval ("b" > "a") :: Bool = 'True