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