{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE TemplateHaskell #-}
module Data.Digit.Hexadecimal.UpperCase(
HEXDigit(..)
, HEXADECIMALNoZero
, HEXADECIMAL
, parseHEXADECIMALNoZero
, parseHEXADECIMAL
, _HEXDigit0
, _HEXDigit1
, _HEXDigit2
, _HEXDigit3
, _HEXDigit4
, _HEXDigit5
, _HEXDigit6
, _HEXDigit7
, _HEXDigit8
, _HEXDigit9
, _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.UpperCase
) 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.UpperCase
import Data.Digit.Decimal(parseDecimalNoZero)
data HEXDigit
= HEXDigit0
| HEXDigit1
| HEXDigit2
| HEXDigit3
| HEXDigit4
| HEXDigit5
| HEXDigit6
| HEXDigit7
| HEXDigit8
| HEXDigit9
| 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 DB HEXDigit where; dB :: Prism' HEXDigit ()
dB = Prism' HEXDigit ()
_HEXDigitB
instance DC HEXDigit where; dC :: Prism' HEXDigit ()
dC = Prism' HEXDigit ()
_HEXDigitC
instance DD HEXDigit where; dD :: Prism' HEXDigit ()
dD = Prism' HEXDigit ()
_HEXDigitD
instance DE HEXDigit where; dE :: Prism' HEXDigit ()
dE = Prism' HEXDigit ()
_HEXDigitE
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)
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 :: * -> *). (DA d, CharParsing p) => p d
parseA
, forall d (p :: * -> *). (DB d, CharParsing p) => p d
parseB
, forall d (p :: * -> *). (DC d, CharParsing p) => p d
parseC
, forall d (p :: * -> *). (DD d, CharParsing p) => p d
parseD
, forall d (p :: * -> *). (DE d, CharParsing p) => p d
parseE
, forall d (p :: * -> *). (DF d, CharParsing p) => p d
parseF
] 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"