{-# LANGUAGE
CPP,
DataKinds,
TypeFamilies,
TypeOperators,
UndecidableInstances #-}
module Generic.Data.Internal.Compat
( readPrec1
, Div
) where
import Data.Functor.Classes
import GHC.TypeLits
#if !MIN_VERSION_base(4,10,0)
import Text.ParserCombinators.ReadPrec (ReadPrec, readS_to_Prec)
import Text.Read (Read(..))
#endif
#if !MIN_VERSION_base(4,10,0)
readPrec1 :: (Read1 f, Read a) => ReadPrec (f a)
readPrec1 = readS_to_Prec $ liftReadsPrec readsPrec readList
#endif
#if !MIN_VERSION_base(4,11,0)
type Div m n = Div' (CmpNat m n) m n
type family Div' (ord :: Ordering) (m :: Nat) (n :: Nat) :: Nat
type instance Div' 'LT m n = 0
type instance Div' 'GT m n = 1 + Div (m-n) n
type instance Div' 'EQ m n = 1
#endif