| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Data.Digit
Description
A data type with ten nullary constructors [0-9] and combinators.
- data Digit
- foldDigit :: a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> Digit -> a
- class D0 d where
- x0 :: D0 d => d
- class D1 d where
- x1 :: D1 d => d
- class D2 d where
- x2 :: D2 d => d
- class D3 d where
- x3 :: D3 d => d
- class D4 d where
- x4 :: D4 d => d
- class D5 d where
- x5 :: D5 d => d
- class D6 d where
- x6 :: D6 d => d
- class D7 d where
- x7 :: D7 d => d
- class D8 d where
- x8 :: D8 d => d
- class D9 d where
- x9 :: D9 d => d
- digit :: Prism' Int Digit
- digitC :: Prism' Char Digit
- digits :: Prism' Int [Digit]
- mod10 :: Int -> Digit
- divMod10 :: Int -> (Int, Digit)
- parsedigit :: (Monad p, CharParsing p) => p Digit
- parsedigits :: (Monad p, CharParsing p) => p [Digit]
- parsedigits1 :: (Monad p, CharParsing p) => p [Digit]
- digitQ :: QuasiQuoter
Data type
A data type with ten nullary constructors.
Destructors
Arguments
| :: a | Zero. |
| -> a | One. |
| -> a | Two. |
| -> a | Three. |
| -> a | Four. |
| -> a | Five. |
| -> a | Six. |
| -> a | Seven. |
| -> a | Eight. |
| -> a | Nine. |
| -> Digit | The digit to fold. |
| -> a |
Catamorphism for Digit.
foldDigit q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 D0 == q0
foldDigit q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 D1 == q1
foldDigit q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 D2 == q2
foldDigit q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 D3 == q3
foldDigit q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 D4 == q4
foldDigit q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 D5 == q5
foldDigit q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 D6 == q6
foldDigit q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 D7 == q7
foldDigit q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 D8 == q8
foldDigit q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 D9 == q9
Prisms
digit :: Prism' Int Digit Source
A prism for using Int as Digit.
>>>5 ^? digitJust 5
>>>0 ^? digitJust 0
>>>9 ^? digitJust 9
>>>10 ^? digitNothing
>>>(-5) ^? digitNothing
>>>digit # D55
>>>digit # D99
>>>digit # D00
digitC :: Prism' Char Digit Source
A prism for using Char as Digit.
>>>'5' ^? digitCJust 5
>>>'0' ^? digitCJust 0
>>>'9' ^? digitCJust 9
>>>'a' ^? digitCNothing
>>>'@' ^? digitCNothing
>>>digitC # D5'5'
>>>digitC # D9'9'
>>>digitC # D0'0'
digits :: Prism' Int [Digit] Source
A prism for the list of digits in an integer
>>>1234 ^? digitsJust [1,2,3,4]
>>>0 ^? digitsJust []
>>>1 ^? digitsJust [1]
>>>90 ^? digitsJust [9,0]
>>>05 ^? digitsJust [5]
>>>105 ^? digitsJust [1,0,5]
>>>(-1) ^? digitsNothing
λ> digits # [D0] 0
>>>digits # [D0, D1]1
>>>digits # [D1]1
>>>digits # [D1, D2, D3]123
>>>digits # [D1, D0, D3]103
>>>digits # [D1, D0, D3, D0]1030
mod operations
Modulus with 10.
>>>mod10 00
>>>mod10 11
>>>mod10 88
>>>mod10 99
>>>mod10 100
>>>mod10 900
>>>mod10 911
>>>mod10 (-1)9
divMod10 :: Int -> (Int, Digit) Source
Division/modulus with 10.
λ> divMod10 0 (0,0)
>>>divMod10 1(0,1)
>>>divMod10 8(0,8)
>>>divMod10 9(0,9)
>>>divMod10 10(1,0)
>>>divMod10 90(9,0)
>>>divMod10 91(9,1)
>>>divMod10 (-1)(-1,9)
Parsers
parsedigit :: (Monad p, CharParsing p) => p Digit Source
parsedigits :: (Monad p, CharParsing p) => p [Digit] Source
parsedigits1 :: (Monad p, CharParsing p) => p [Digit] Source
Quasi-Quoters
A QuasiQuoter for any range of Digit.
- digitQ|4|
- :: Digit 4
named [digitQ|4|] = "four" named [digitQ|$x|] = "not four, " ++ show x ++ " instead"
mod10D x = let y = mod x 10 in [digitQ|$y|]