module ASCII.Word4 ( Word4 (..) ) where

import Data.Data (Data)
import Data.Eq (Eq)
import Data.Hashable (Hashable)
import Data.Ord (Ord (..))
import GHC.Generics (Generic)
import Prelude (Bounded (..), Enum (..))
import Text.Show (Show)

-- | 4-bit unsigned integer (a whole number between /0/ and /15/)
data Word4
    = Number0  -- ^ Zero
    | Number1  -- ^ One
    | Number2  -- ^ Two
    | Number3  -- ^ Three
    | Number4  -- ^ Four
    | Number5  -- ^ Five
    | Number6  -- ^ Six
    | Number7  -- ^ Seven
    | Number8  -- ^ Eight
    | Number9  -- ^ Nine
    | Number10 -- ^ Ten      (A)
    | Number11 -- ^ Eleven   (B)
    | Number12 -- ^ Twelve   (C)
    | Number13 -- ^ Thirteen (D)
    | Number14 -- ^ Fourteen (E)
    | Number15 -- ^ Fifteen  (F)
    deriving stock (Word4
forall a. a -> a -> Bounded a
maxBound :: Word4
$cmaxBound :: Word4
minBound :: Word4
$cminBound :: Word4
Bounded, Int -> Word4
Word4 -> Int
Word4 -> [Word4]
Word4 -> Word4
Word4 -> Word4 -> [Word4]
Word4 -> Word4 -> Word4 -> [Word4]
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 :: Word4 -> Word4 -> Word4 -> [Word4]
$cenumFromThenTo :: Word4 -> Word4 -> Word4 -> [Word4]
enumFromTo :: Word4 -> Word4 -> [Word4]
$cenumFromTo :: Word4 -> Word4 -> [Word4]
enumFromThen :: Word4 -> Word4 -> [Word4]
$cenumFromThen :: Word4 -> Word4 -> [Word4]
enumFrom :: Word4 -> [Word4]
$cenumFrom :: Word4 -> [Word4]
fromEnum :: Word4 -> Int
$cfromEnum :: Word4 -> Int
toEnum :: Int -> Word4
$ctoEnum :: Int -> Word4
pred :: Word4 -> Word4
$cpred :: Word4 -> Word4
succ :: Word4 -> Word4
$csucc :: Word4 -> Word4
Enum, Word4 -> Word4 -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Word4 -> Word4 -> Bool
$c/= :: Word4 -> Word4 -> Bool
== :: Word4 -> Word4 -> Bool
$c== :: Word4 -> Word4 -> Bool
Eq, Eq Word4
Word4 -> Word4 -> Bool
Word4 -> Word4 -> Ordering
Word4 -> Word4 -> Word4
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 :: Word4 -> Word4 -> Word4
$cmin :: Word4 -> Word4 -> Word4
max :: Word4 -> Word4 -> Word4
$cmax :: Word4 -> Word4 -> Word4
>= :: Word4 -> Word4 -> Bool
$c>= :: Word4 -> Word4 -> Bool
> :: Word4 -> Word4 -> Bool
$c> :: Word4 -> Word4 -> Bool
<= :: Word4 -> Word4 -> Bool
$c<= :: Word4 -> Word4 -> Bool
< :: Word4 -> Word4 -> Bool
$c< :: Word4 -> Word4 -> Bool
compare :: Word4 -> Word4 -> Ordering
$ccompare :: Word4 -> Word4 -> Ordering
Ord, Int -> Word4 -> ShowS
[Word4] -> ShowS
Word4 -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Word4] -> ShowS
$cshowList :: [Word4] -> ShowS
show :: Word4 -> String
$cshow :: Word4 -> String
showsPrec :: Int -> Word4 -> ShowS
$cshowsPrec :: Int -> Word4 -> ShowS
Show, Typeable Word4
Word4 -> DataType
Word4 -> Constr
(forall b. Data b => b -> b) -> Word4 -> Word4
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) -> Word4 -> u
forall u. (forall d. Data d => d -> u) -> Word4 -> [u]
forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Word4 -> r
forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Word4 -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Word4 -> m Word4
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Word4 -> m Word4
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Word4
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Word4 -> c Word4
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Word4)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Word4)
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Word4 -> m Word4
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Word4 -> m Word4
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Word4 -> m Word4
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Word4 -> m Word4
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Word4 -> m Word4
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Word4 -> m Word4
gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Word4 -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Word4 -> u
gmapQ :: forall u. (forall d. Data d => d -> u) -> Word4 -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> Word4 -> [u]
gmapQr :: forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Word4 -> r
$cgmapQr :: forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Word4 -> r
gmapQl :: forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Word4 -> r
$cgmapQl :: forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Word4 -> r
gmapT :: (forall b. Data b => b -> b) -> Word4 -> Word4
$cgmapT :: (forall b. Data b => b -> b) -> Word4 -> Word4
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Word4)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Word4)
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Word4)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Word4)
dataTypeOf :: Word4 -> DataType
$cdataTypeOf :: Word4 -> DataType
toConstr :: Word4 -> Constr
$ctoConstr :: Word4 -> Constr
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Word4
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Word4
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Word4 -> c Word4
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Word4 -> c Word4
Data, forall x. Rep Word4 x -> Word4
forall x. Word4 -> Rep Word4 x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Word4 x -> Word4
$cfrom :: forall x. Word4 -> Rep Word4 x
Generic)
    deriving anyclass Eq Word4
Int -> Word4 -> Int
Word4 -> Int
forall a. Eq a -> (Int -> a -> Int) -> (a -> Int) -> Hashable a
hash :: Word4 -> Int
$chash :: Word4 -> Int
hashWithSalt :: Int -> Word4 -> Int
$chashWithSalt :: Int -> Word4 -> Int
Hashable