module Data.Ordering (
    -- * Simple functions
    flipOrdering,
    ifEQ, noLT, noGT,
    -- * Reexports from @base@
    Ordering(..)
) where

import Data.Ord

-- | Replace the 'EQ' case with another 'Ordering'
ifEQ :: Ordering -> Ordering -> Ordering
ifEQ :: Ordering -> Ordering -> Ordering
ifEQ Ordering
i Ordering
o =
  case Ordering
o of
    Ordering
EQ -> Ordering
i
    Ordering
x -> Ordering
x

-- | Clamp 'LT' to 'EQ'
noLT :: Ordering -> Ordering
noLT :: Ordering -> Ordering
noLT Ordering
o =
  case Ordering
o of
    Ordering
LT -> Ordering
EQ
    Ordering
x -> Ordering
x

-- | Clamp 'GT' to 'EQ'
noGT :: Ordering -> Ordering
noGT :: Ordering -> Ordering
noGT Ordering
o =
  case Ordering
o of
    Ordering
GT -> Ordering
EQ
    Ordering
x -> Ordering
x

-- | Flip an 'Ordering'
flipOrdering :: Ordering -> Ordering
flipOrdering :: Ordering -> Ordering
flipOrdering Ordering
o =
  case Ordering
o of
    Ordering
LT -> Ordering
GT
    Ordering
EQ -> Ordering
EQ
    Ordering
GT -> Ordering
LT