-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | A data-type representing digits 0-9 and other combinations -- -- -- Digit is a data-type that represents the digits 0-9 and other -- combinations. @package digit @version 0.2.2 -- | A data type with ten nullary constructors [0-9] and combinators. module Data.Digit -- | A data type with ten nullary constructors. data Digit -- | 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
--   
foldDigit :: a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> Digit -> a class D0 d d0 :: D0 d => Prism' d () x0 :: D0 d => d class D1 d d1 :: D1 d => Prism' d () x1 :: D1 d => d class D2 d d2 :: D2 d => Prism' d () x2 :: D2 d => d class D3 d d3 :: D3 d => Prism' d () x3 :: D3 d => d class D4 d d4 :: D4 d => Prism' d () x4 :: D4 d => d class D5 d d5 :: D5 d => Prism' d () x5 :: D5 d => d class D6 d d6 :: D6 d => Prism' d () x6 :: D6 d => d class D7 d d7 :: D7 d => Prism' d () x7 :: D7 d => d class D8 d d8 :: D8 d => Prism' d () x8 :: D8 d => d class D9 d d9 :: D9 d => Prism' d () x9 :: D9 d => d -- | A prism for using Int as Digit. -- --
--   >>> 5 ^? digit
--   Just 5
--   
-- --
--   >>> 0 ^? digit
--   Just 0
--   
-- --
--   >>> 9 ^? digit
--   Just 9
--   
-- --
--   >>> 10 ^? digit
--   Nothing
--   
-- --
--   >>> (-5) ^? digit
--   Nothing
--   
-- --
--   >>> digit # D5
--   5
--   
-- --
--   >>> digit # D9
--   9
--   
-- --
--   >>> digit # D0
--   0
--   
digit :: Prism' Int Digit -- | A prism for using Char as Digit. -- --
--   >>> '5' ^? digitC
--   Just 5
--   
-- --
--   >>> '0' ^? digitC
--   Just 0
--   
-- --
--   >>> '9' ^? digitC
--   Just 9
--   
-- --
--   >>> 'a' ^? digitC
--   Nothing
--   
-- --
--   >>> '@' ^? digitC
--   Nothing
--   
-- --
--   >>> digitC # D5
--   '5'
--   
-- --
--   >>> digitC # D9
--   '9'
--   
-- --
--   >>> digitC # D0
--   '0'
--   
digitC :: Prism' Char Digit -- | A prism for the list of digits in an integer -- --
--   >>> 1234 ^? digits
--   Just [1,2,3,4]
--   
-- --
--   >>> 0 ^? digits
--   Just []
--   
-- --
--   >>> 1 ^? digits
--   Just [1]
--   
-- --
--   >>> 90 ^? digits
--   Just [9,0]
--   
-- --
--   >>> 05 ^? digits
--   Just [5]
--   
-- --
--   >>> 105 ^? digits
--   Just [1,0,5]
--   
-- --
--   >>> (-1) ^? digits
--   Nothing
--   
-- -- λ> 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
--   
digits :: Prism' Int [Digit] -- | Modulus with 10. -- --
--   >>> mod10 0
--   0
--   
-- --
--   >>> mod10 1
--   1
--   
-- --
--   >>> mod10 8
--   8
--   
-- --
--   >>> mod10 9
--   9
--   
-- --
--   >>> mod10 10
--   0
--   
-- --
--   >>> mod10 90
--   0
--   
-- --
--   >>> mod10 91
--   1
--   
-- --
--   >>> mod10 (-1)
--   9
--   
mod10 :: Int -> Digit -- | 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)
--   
divMod10 :: Int -> (Int, Digit) parseDigit :: (Monad p, CharParsing p) => p Digit -- | A QuasiQuoter for any range of Digit. -- -- -- -- named [digitQ|4|] = "four" named [digitQ|$x|] = "not four, " ++ show x -- ++ " instead" -- -- mod10D x = let y = mod x 10 in [digitQ|$y|] digitQ :: QuasiQuoter instance Data.Data.Data Data.Digit.Digit instance GHC.Enum.Bounded Data.Digit.Digit instance GHC.Enum.Enum Data.Digit.Digit instance GHC.Classes.Ord Data.Digit.Digit instance GHC.Classes.Eq Data.Digit.Digit instance Data.Digit.D0 Data.Digit.Digit instance Data.Digit.D1 Data.Digit.Digit instance Data.Digit.D2 Data.Digit.Digit instance Data.Digit.D3 Data.Digit.Digit instance Data.Digit.D4 Data.Digit.Digit instance Data.Digit.D5 Data.Digit.Digit instance Data.Digit.D6 Data.Digit.Digit instance Data.Digit.D7 Data.Digit.Digit instance Data.Digit.D8 Data.Digit.Digit instance Data.Digit.D9 Data.Digit.Digit instance GHC.Show.Show Data.Digit.Digit instance GHC.Read.Read Data.Digit.Digit