module Data.MediaBus.Basics.Monotone
( LocalOrd(..)
) where
import Data.Int
import Data.Word
class LocalOrd a where
succeeds :: a -> a -> Bool
instance LocalOrd Word8 where
x `succeeds` y =
let d = x y
in d > 0 && d <= ((maxBound minBound) `div` 2)
instance LocalOrd Word16 where
x `succeeds` y =
let d = x y
in d > 0 && d <= ((maxBound minBound) `div` 2)
instance LocalOrd Word32 where
x `succeeds` y =
let d = x y
in d > 0 && d <= ((maxBound minBound) `div` 2)
instance LocalOrd Word64 where
x `succeeds` y =
let d = x y
in d > 0 && d <= ((maxBound minBound) `div` 2)
instance LocalOrd Int8 where
x `succeeds` y = x y > 0
instance LocalOrd Int16 where
x `succeeds` y = x y > 0
instance LocalOrd Int32 where
x `succeeds` y = x y > 0
instance LocalOrd Int64 where
x `succeeds` y = x y > 0
instance LocalOrd Int where
x `succeeds` y = x y > 0