Home Reference Source Repository

src/Data/Ord.js


import { _curry } from '../util';

export const LT = -1;
export const EQ = 0;
export const GT = 1;

export const Ordering = { LT, EQ, GT };

// compare :: a -> a -> Ordering
export const compare = _curry((a,b) => a < b ? LT : a === b ? EQ : GT);

// (<) :: a -> a -> Bool
export const lt = _curry((a, b) => a < b);

// (<=) :: a -> a -> Bool
export const le = _curry((a,b) => a <= b);

// (>) :: a -> a -> Bool
export const gt = _curry((a,b) => a > b);

// (>=) :: a -> a -> Bool
export const ge = _curry((a,b) => a >= b);

// max :: a -> a -> a
export const max = _curry((a,b) => a < b ? b : a);

// min :: a -> a -> a
export const min = _curry((a,b) => a < b ? a : b);

// comparing :: Ord a => (b -> a) -> b -> b -> Ordering
export const comparing = _curry((fn, a, b) => compare(fn(a), fn(b)));