module Common (module Common, module X) where import Control.Applicative as X import Control.DeepSeq as X (NFData (rnf)) import Control.Exception as X (ArithException (Overflow, Underflow), throw) import Control.Monad as X import Control.Newtype as X (Newtype (..)) import Data.Bits as X import Data.ByteString as X (ByteString) import Data.Int as X import Data.IntCast as X import Data.List.NonEmpty as X (NonEmpty (..)) import Data.Maybe as X import Data.Proxy as X (Proxy (Proxy)) import Data.Semigroup as X import Data.Text.Short as X (ShortText) import Data.Word as X import GHC.Generics as X (Generic) import GHC.TypeLits as X {-# INLINE rwhnf #-} rwhnf :: a -> () rwhnf x = seq x () {-# INLINE inside #-} inside :: Ord a => a -> (a, a) -> Bool x `inside` (lb,ub) | lb > ub = error "inside: unsatifiable range" | otherwise = lb <= x && x <= ub