{-# language Safe #-}

module D10.Safe.Type (D10 (..)) where

import Data.Data (Data)
import Data.Hashable (Hashable)
import GHC.Generics (Generic)

-- | A whole number between /0/ and /9/
data D10
    = D0  -- ^ Zero
    | D1  -- ^ One
    | D2  -- ^ Two
    | D3  -- ^ Three
    | D4  -- ^ Four
    | D5  -- ^ Five
    | D6  -- ^ Six
    | D7  -- ^ Seven
    | D8  -- ^ Eight
    | D9  -- ^ Nine
    deriving stock (D10
D10 -> D10 -> Bounded D10
forall a. a -> a -> Bounded a
maxBound :: D10
$cmaxBound :: D10
minBound :: D10
$cminBound :: D10
Bounded, Int -> D10
D10 -> Int
D10 -> [D10]
D10 -> D10
D10 -> D10 -> [D10]
D10 -> D10 -> D10 -> [D10]
(D10 -> D10)
-> (D10 -> D10)
-> (Int -> D10)
-> (D10 -> Int)
-> (D10 -> [D10])
-> (D10 -> D10 -> [D10])
-> (D10 -> D10 -> [D10])
-> (D10 -> D10 -> D10 -> [D10])
-> Enum D10
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
enumFromThenTo :: D10 -> D10 -> D10 -> [D10]
$cenumFromThenTo :: D10 -> D10 -> D10 -> [D10]
enumFromTo :: D10 -> D10 -> [D10]
$cenumFromTo :: D10 -> D10 -> [D10]
enumFromThen :: D10 -> D10 -> [D10]
$cenumFromThen :: D10 -> D10 -> [D10]
enumFrom :: D10 -> [D10]
$cenumFrom :: D10 -> [D10]
fromEnum :: D10 -> Int
$cfromEnum :: D10 -> Int
toEnum :: Int -> D10
$ctoEnum :: Int -> D10
pred :: D10 -> D10
$cpred :: D10 -> D10
succ :: D10 -> D10
$csucc :: D10 -> D10
Enum, D10 -> D10 -> Bool
(D10 -> D10 -> Bool) -> (D10 -> D10 -> Bool) -> Eq D10
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: D10 -> D10 -> Bool
$c/= :: D10 -> D10 -> Bool
== :: D10 -> D10 -> Bool
$c== :: D10 -> D10 -> Bool
Eq, Eq D10
Eq D10
-> (D10 -> D10 -> Ordering)
-> (D10 -> D10 -> Bool)
-> (D10 -> D10 -> Bool)
-> (D10 -> D10 -> Bool)
-> (D10 -> D10 -> Bool)
-> (D10 -> D10 -> D10)
-> (D10 -> D10 -> D10)
-> Ord D10
D10 -> D10 -> Bool
D10 -> D10 -> Ordering
D10 -> D10 -> D10
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: D10 -> D10 -> D10
$cmin :: D10 -> D10 -> D10
max :: D10 -> D10 -> D10
$cmax :: D10 -> D10 -> D10
>= :: D10 -> D10 -> Bool
$c>= :: D10 -> D10 -> Bool
> :: D10 -> D10 -> Bool
$c> :: D10 -> D10 -> Bool
<= :: D10 -> D10 -> Bool
$c<= :: D10 -> D10 -> Bool
< :: D10 -> D10 -> Bool
$c< :: D10 -> D10 -> Bool
compare :: D10 -> D10 -> Ordering
$ccompare :: D10 -> D10 -> Ordering
$cp1Ord :: Eq D10
Ord, Int -> D10 -> ShowS
[D10] -> ShowS
D10 -> String
(Int -> D10 -> ShowS)
-> (D10 -> String) -> ([D10] -> ShowS) -> Show D10
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [D10] -> ShowS
$cshowList :: [D10] -> ShowS
show :: D10 -> String
$cshow :: D10 -> String
showsPrec :: Int -> D10 -> ShowS
$cshowsPrec :: Int -> D10 -> ShowS
Show, Typeable D10
DataType
Constr
Typeable D10
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> D10 -> c D10)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c D10)
-> (D10 -> Constr)
-> (D10 -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c D10))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c D10))
-> ((forall b. Data b => b -> b) -> D10 -> D10)
-> (forall r r'.
    (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> D10 -> r)
-> (forall r r'.
    (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> D10 -> r)
-> (forall u. (forall d. Data d => d -> u) -> D10 -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> D10 -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> D10 -> m D10)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> D10 -> m D10)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> D10 -> m D10)
-> Data D10
D10 -> DataType
D10 -> Constr
(forall b. Data b => b -> b) -> D10 -> D10
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> D10 -> c D10
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c D10
forall a.
Typeable a
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
    (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
    (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> D10 -> u
forall u. (forall d. Data d => d -> u) -> D10 -> [u]
forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> D10 -> r
forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> D10 -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> D10 -> m D10
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> D10 -> m D10
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c D10
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> D10 -> c D10
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c D10)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c D10)
$cD9 :: Constr
$cD8 :: Constr
$cD7 :: Constr
$cD6 :: Constr
$cD5 :: Constr
$cD4 :: Constr
$cD3 :: Constr
$cD2 :: Constr
$cD1 :: Constr
$cD0 :: Constr
$tD10 :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> D10 -> m D10
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> D10 -> m D10
gmapMp :: (forall d. Data d => d -> m d) -> D10 -> m D10
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> D10 -> m D10
gmapM :: (forall d. Data d => d -> m d) -> D10 -> m D10
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> D10 -> m D10
gmapQi :: Int -> (forall d. Data d => d -> u) -> D10 -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> D10 -> u
gmapQ :: (forall d. Data d => d -> u) -> D10 -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> D10 -> [u]
gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> D10 -> r
$cgmapQr :: forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> D10 -> r
gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> D10 -> r
$cgmapQl :: forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> D10 -> r
gmapT :: (forall b. Data b => b -> b) -> D10 -> D10
$cgmapT :: (forall b. Data b => b -> b) -> D10 -> D10
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c D10)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c D10)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c D10)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c D10)
dataTypeOf :: D10 -> DataType
$cdataTypeOf :: D10 -> DataType
toConstr :: D10 -> Constr
$ctoConstr :: D10 -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c D10
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c D10
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> D10 -> c D10
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> D10 -> c D10
$cp1Data :: Typeable D10
Data, (forall x. D10 -> Rep D10 x)
-> (forall x. Rep D10 x -> D10) -> Generic D10
forall x. Rep D10 x -> D10
forall x. D10 -> Rep D10 x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep D10 x -> D10
$cfrom :: forall x. D10 -> Rep D10 x
Generic)
    deriving anyclass Eq D10
Eq D10 -> (Int -> D10 -> Int) -> (D10 -> Int) -> Hashable D10
Int -> D10 -> Int
D10 -> Int
forall a. Eq a -> (Int -> a -> Int) -> (a -> Int) -> Hashable a
hash :: D10 -> Int
$chash :: D10 -> Int
hashWithSalt :: Int -> D10 -> Int
$chashWithSalt :: Int -> D10 -> Int
$cp1Hashable :: Eq D10
Hashable