{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE TemplateHaskell #-}
module Data.Digit.Hexadecimal.MixedCase(
HeXDigit(..)
, HeXaDeCiMaLNoZero
, HeXaDeCiMaL
, parseHeXaDeCiMaLNoZero
, parseHeXaDeCiMaL
, _HeXDigit0
, _HeXDigit1
, _HeXDigit2
, _HeXDigit3
, _HeXDigit4
, _HeXDigit5
, _HeXDigit6
, _HeXDigit7
, _HeXDigit8
, _HeXDigit9
, _HeXDigita
, _HeXDigitb
, _HeXDigitc
, _HeXDigitd
, _HeXDigite
, _HeXDigitf
, _HeXDigitA
, _HeXDigitB
, _HeXDigitC
, _HeXDigitD
, _HeXDigitE
, _HeXDigitF
, module Data.Digit.Class.D0
, module Data.Digit.Class.D1
, module Data.Digit.Class.D2
, module Data.Digit.Class.D3
, module Data.Digit.Class.D4
, module Data.Digit.Class.D5
, module Data.Digit.Class.D6
, module Data.Digit.Class.D7
, module Data.Digit.Class.D8
, module Data.Digit.Class.D9
, module Data.Digit.Class.MixedCase
) where
import Prelude (Eq, Show, Ord)
import Control.Lens.TH (makePrisms)
import Text.Parser.Char(CharParsing)
import Text.Parser.Combinators((<?>), choice)
import Data.Digit.Class.D0
import Data.Digit.Class.D1
import Data.Digit.Class.D2
import Data.Digit.Class.D3
import Data.Digit.Class.D4
import Data.Digit.Class.D5
import Data.Digit.Class.D6
import Data.Digit.Class.D7
import Data.Digit.Class.D8
import Data.Digit.Class.D9
import Data.Digit.Class.MixedCase
import Data.Digit.Decimal(parseDecimalNoZero)
data HeXDigit
= HeXDigit0
| HeXDigit1
| HeXDigit2
| HeXDigit3
| HeXDigit4
| HeXDigit5
| HeXDigit6
| HeXDigit7
| HeXDigit8
| HeXDigit9
| HeXDigita
| HeXDigitb
| HeXDigitc
| HeXDigitd
| HeXDigite
| HeXDigitf
| HeXDigitA
| HeXDigitB
| HeXDigitC
| HeXDigitD
| HeXDigitE
| HeXDigitF
deriving (Int -> HeXDigit -> ShowS
[HeXDigit] -> ShowS
HeXDigit -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [HeXDigit] -> ShowS
$cshowList :: [HeXDigit] -> ShowS
show :: HeXDigit -> String
$cshow :: HeXDigit -> String
showsPrec :: Int -> HeXDigit -> ShowS
$cshowsPrec :: Int -> HeXDigit -> ShowS
Show, HeXDigit -> HeXDigit -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: HeXDigit -> HeXDigit -> Bool
$c/= :: HeXDigit -> HeXDigit -> Bool
== :: HeXDigit -> HeXDigit -> Bool
$c== :: HeXDigit -> HeXDigit -> Bool
Eq, Eq HeXDigit
HeXDigit -> HeXDigit -> Bool
HeXDigit -> HeXDigit -> Ordering
HeXDigit -> HeXDigit -> HeXDigit
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 :: HeXDigit -> HeXDigit -> HeXDigit
$cmin :: HeXDigit -> HeXDigit -> HeXDigit
max :: HeXDigit -> HeXDigit -> HeXDigit
$cmax :: HeXDigit -> HeXDigit -> HeXDigit
>= :: HeXDigit -> HeXDigit -> Bool
$c>= :: HeXDigit -> HeXDigit -> Bool
> :: HeXDigit -> HeXDigit -> Bool
$c> :: HeXDigit -> HeXDigit -> Bool
<= :: HeXDigit -> HeXDigit -> Bool
$c<= :: HeXDigit -> HeXDigit -> Bool
< :: HeXDigit -> HeXDigit -> Bool
$c< :: HeXDigit -> HeXDigit -> Bool
compare :: HeXDigit -> HeXDigit -> Ordering
$ccompare :: HeXDigit -> HeXDigit -> Ordering
Ord)
makePrisms ''HeXDigit
instance D0 HeXDigit where; d0 :: Prism' HeXDigit ()
d0 = Prism' HeXDigit ()
_HeXDigit0
instance D1 HeXDigit where; d1 :: Prism' HeXDigit ()
d1 = Prism' HeXDigit ()
_HeXDigit1
instance D2 HeXDigit where; d2 :: Prism' HeXDigit ()
d2 = Prism' HeXDigit ()
_HeXDigit2
instance D3 HeXDigit where; d3 :: Prism' HeXDigit ()
d3 = Prism' HeXDigit ()
_HeXDigit3
instance D4 HeXDigit where; d4 :: Prism' HeXDigit ()
d4 = Prism' HeXDigit ()
_HeXDigit4
instance D5 HeXDigit where; d5 :: Prism' HeXDigit ()
d5 = Prism' HeXDigit ()
_HeXDigit5
instance D6 HeXDigit where; d6 :: Prism' HeXDigit ()
d6 = Prism' HeXDigit ()
_HeXDigit6
instance D7 HeXDigit where; d7 :: Prism' HeXDigit ()
d7 = Prism' HeXDigit ()
_HeXDigit7
instance D8 HeXDigit where; d8 :: Prism' HeXDigit ()
d8 = Prism' HeXDigit ()
_HeXDigit8
instance D9 HeXDigit where; d9 :: Prism' HeXDigit ()
d9 = Prism' HeXDigit ()
_HeXDigit9
instance DA HeXDigit where; dA :: Prism' HeXDigit ()
dA = Prism' HeXDigit ()
_HeXDigitA
instance Da HeXDigit where; da :: Prism' HeXDigit ()
da = Prism' HeXDigit ()
_HeXDigita
instance DB HeXDigit where; dB :: Prism' HeXDigit ()
dB = Prism' HeXDigit ()
_HeXDigitB
instance Db HeXDigit where; db :: Prism' HeXDigit ()
db = Prism' HeXDigit ()
_HeXDigitb
instance DC HeXDigit where; dC :: Prism' HeXDigit ()
dC = Prism' HeXDigit ()
_HeXDigitC
instance Dc HeXDigit where; dc :: Prism' HeXDigit ()
dc = Prism' HeXDigit ()
_HeXDigitc
instance DD HeXDigit where; dD :: Prism' HeXDigit ()
dD = Prism' HeXDigit ()
_HeXDigitD
instance Dd HeXDigit where; dd :: Prism' HeXDigit ()
dd = Prism' HeXDigit ()
_HeXDigitd
instance DE HeXDigit where; dE :: Prism' HeXDigit ()
dE = Prism' HeXDigit ()
_HeXDigitE
instance De HeXDigit where; de :: Prism' HeXDigit ()
de = Prism' HeXDigit ()
_HeXDigite
instance DF HeXDigit where; dF :: Prism' HeXDigit ()
dF = Prism' HeXDigit ()
_HeXDigitF
instance Df HeXDigit where; df :: Prism' HeXDigit ()
df = Prism' HeXDigit ()
_HeXDigitf
type HeXaDeCiMaLNoZero d =
(D1 d, D2 d, D3 d, D4 d, D5 d, D6 d, D7 d, D8 d, D9 d, DA d, DB d, DC d, DD d, DE d, DF d, Da d, Db d, Dc d, Dd d, De d, De d, Df d)
parseHeXaDeCiMaLNoZero ::
(HeXaDeCiMaLNoZero d, CharParsing p) =>
p d
parseHeXaDeCiMaLNoZero :: forall d (p :: * -> *). (HeXaDeCiMaLNoZero d, CharParsing p) => p d
parseHeXaDeCiMaLNoZero =
forall (m :: * -> *) a. Alternative m => [m a] -> m a
choice
[
forall d (p :: * -> *). (DecimalNoZero d, CharParsing p) => p d
parseDecimalNoZero
, forall d (p :: * -> *). (DAa d, CharParsing p) => p d
parseAa
, forall d (p :: * -> *). (DBb d, CharParsing p) => p d
parseBb
, forall d (p :: * -> *). (DCc d, CharParsing p) => p d
parseCc
, forall d (p :: * -> *). (DDd d, CharParsing p) => p d
parseDd
, forall d (p :: * -> *). (DEe d, CharParsing p) => p d
parseEe
, forall d (p :: * -> *). (DFf d, CharParsing p) => p d
parseFf
] forall (m :: * -> *) a. Parsing m => m a -> String -> m a
<?> String
"HeXaDeCiMaLNoZero"
type HeXaDeCiMaL d =
(D0 d, HeXaDeCiMaLNoZero d)
parseHeXaDeCiMaL ::
(HeXaDeCiMaL d, CharParsing p) =>
p d
parseHeXaDeCiMaL :: forall d (p :: * -> *). (HeXaDeCiMaL d, CharParsing p) => p d
parseHeXaDeCiMaL =
forall (m :: * -> *) a. Alternative m => [m a] -> m a
choice
[
forall d (p :: * -> *). (D0 d, CharParsing p) => p d
parse0
, forall d (p :: * -> *). (HeXaDeCiMaLNoZero d, CharParsing p) => p d
parseHeXaDeCiMaLNoZero
] forall (m :: * -> *) a. Parsing m => m a -> String -> m a
<?> String
"HeXaDeCiMaL"