ϊΞ!Ž        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸSafed10Determines whether a   is in the range '0' to '9'.d10Determines whether a ‘H consists of a single character and that character is within the range '0' to '9'.d10Determines whether a ‘< consists entirely of characters that are within the range '0' to '9'.d10Determines whether a ’ is in the range 0 to 9.d10Determines whether an £ is in the range 0 to 9.d10Determines whether an € is in the range 0 to 9.d10.Determines whether a number whose type has an ₯" instance is in the range 0 to 9.None/:XkΎπ+d10A value of some numeric type a between ¦ 0 and ¦ 9.The  Data.D10.Num2 module provides many functions for constructing  values, including:  :: £ -> §   :: £ -> ,There are also several ways to safely write " literals using Template Haskell: With the  QuasiQuotes? GHC extension enabled, you can write use the quasi-quoters , and -. With the TemplateHaskellB GHC extension enabled, you can splice expressions produced by ( and ).d10ŸThe constructor's name include the word "unsafe" as a reminder that you should generally avoid using it directly, because it allows constructing invalid  values. d10 Convert a  to its underlying   representation.d10Char [d10|7|]'7' d10 Convert a  to a ‘.   x = [  x]d10Str [d10|7|]"7" d10 Convert a  to a ’., is a more general version of this function.d10Nat [d10|7|]7 d10 Convert a  to an £., is a more general version of this function.d10Integer [d10|7|]7 d10 Convert a  to an €., is a more general version of this function.d10Int [d10|7|]7d10 Convert a  to any kind of number with a ¨ instance..Specialized versions of this function include  ,  , and  .d10Num [d10|7|] :: Integer7d10The 4 which is uniquely congruent modulo 10 to the given ’., is a more general version of this function.natMod10 56 :: D10 Int[d10|6|]d10The 4 which is uniquely congruent modulo 10 to the given £., is a more general version of this function.integerMod10 56 :: D10 Int[d10|6|]integerMod10 (-56) :: D10 Int[d10|4|]d10The 4 which is uniquely congruent modulo 10 to the given €., is a more general version of this function.intMod10 56 :: D10 Int[d10|6|]intMod10 (-56) :: D10 Int[d10|4|]d10The e which is uniquely congruent modulo 10 to the given number (whose type must have an instance of the ₯ class)..Specialized versions of this function include , , and .(integralMod10 (56 :: Integer) :: D10 Int[d10|6|]+integralMod10 ((-56) :: Integer) :: D10 Int[d10|4|]d10 Convert a   to a  if it is within the range '0' to '9' , or produce © otherwise.  x =  ( x)!, is a more general version of this function.charD10Maybe '5' Just [d10|5|]charD10Maybe 'a'Nothingd10 Convert a ‘ to a Q if it consists of exactly one character and that character is within the range '0' to '9', or produce © otherwise.  x =  ( x)", is a more general version of this function.strD10Maybe "5" Just [d10|5|]strD10Maybe "a"NothingstrD10Maybe "58"Nothingd10 Convert a ‘ to a list of > if all of the characters in the string are within the range '0' to '9', or produce © otherwise.  x =  ( x)#, is a more general version of this function.strD10ListMaybe "5"Just [d10list|5|]strD10ListMaybe "a"NothingstrD10ListMaybe "58"Just [d10list|58|]d10 Convert a ’ to a $ if it is less than 10, or produce © otherwise.  x =  ( x), $, and '- are more general versions of this function. natD10Maybe 5 Just [d10|5|]natD10Maybe 12Nothingd10 Convert an £ to a / if it is within the range 0 to 9, or produce © otherwise.  x =  ( x), %, and '- are more general versions of this function.integerD10Maybe 5 Just [d10|5|]integerD10Maybe 12NothingintegerD10Maybe (-5)Nothingd10 Convert an € to a / if it is within the range 0 to 9, or produce © otherwise.  x =  ( x), &, and '- are more general versions of this function. intD10Maybe 5 Just [d10|5|]intD10Maybe 12NothingintD10Maybe (-5)Nothingd10 Construct a ! from any kind of number with an ₯ instance, or produce ©/ if the number falls outside the range 0 to 9.  x =  ( x).Specialized versions of this function include , , and .', is a more general version of this function.integralD10Maybe (5 :: Integer) Just [d10|5|] integralD10Maybe (12 :: Integer)Nothing"integralD10Maybe ((-5) :: Integer)Nothingd10 Convert a   to a  if it is within the range '0' to '9', or ͺ! with an error message otherwise.charD10Either '5'Right [d10|5|]charD10Either 'a'"Left "d10 must be between 0 and 9"d10 Convert a ‘ to a N if it consists of a single character and that character is within the range '0' to '9', or ͺ! with an error message otherwise.strD10Either "5"Right [d10|5|]strD10Either "a""Left "d10 must be between 0 and 9"strD10Either "58"%Left "d10 must be a single character"d10 Convert a ‘ to a ? if all of the characters in the string fall within the range '0' to '9', or ͺ" with an error message otherwise.strD10ListEither "5"Right [d10list|5|]strD10ListEither "a""Left "d10 must be between 0 and 9"strD10ListEither "58"Right [d10list|58|]d10 Convert a ’ to a  if it is less than 10, or ͺ! with an error message otherwise.natD10Either 5Right [d10|5|]natD10Either 12Left "d10 must be less than 10"d10 Convert an £ to a ' if it is within the range 0 to 9, or ͺ! with an error message otherwise.integerD10Either 5Right [d10|5|]integerD10Either 12"Left "d10 must be between 0 and 9"integerD10Either (-5)"Left "d10 must be between 0 and 9"d10 Convert an € to a ' if it is within the range 0 to 9, or ͺ! with an error message otherwise.intD10Either 5Right [d10|5|]intD10Either 12"Left "d10 must be between 0 and 9"intD10Either (-5)"Left "d10 must be between 0 and 9" d10'Convert a number of a type that has an ₯ instance to a ) if it falls within the range 0 to 9, or ͺ" with an error message otherwise. integralD10Either (5 :: Integer)Right [d10|5|]!integralD10Either (12 :: Integer)"Left "d10 must be between 0 and 9"#integralD10Either ((-5) :: Integer)"Left "d10 must be between 0 and 9"!d10 Convert a   to a  if it is within the range '0' to '9', or «! with an error message otherwise.+ is a specialized version of this function.charD10Fail '5' :: IO (D10 Int)[d10|5|]charD10Fail 'a' :: IO (D10 Int)7*** Exception: user error (d10 must be between 0 and 9)"d10 Convert a ‘ to a N if it consists of a single character and that character is within the range '0' to '9', or «! with an error message otherwise.+ is a specialized version of this function.strD10Fail "5" :: IO (D10 Int)[d10|5|]strD10Fail "a" :: IO (D10 Int)7*** Exception: user error (d10 must be between 0 and 9)strD10Fail "58" :: IO (D10 Int):*** Exception: user error (d10 must be a single character)#d10 Convert a ‘ to a ? if all of the characters in the string fall within the range '0' to '9', or «" with an error message otherwise.+ is a specialized version of this function."strD10ListFail "5" :: IO [D10 Int] [d10list|5|]"strD10ListFail "a" :: IO [D10 Int]7*** Exception: user error (d10 must be between 0 and 9)#strD10ListFail "58" :: IO [D10 Int] [d10list|58|]$d10 Convert a ’ to a  if it is less than 10, or «! with an error message otherwise.+ is a specialized version of this function.', is a more general version of this function.natD10Fail 5 :: IO (D10 Int)[d10|5|]natD10Fail 12 :: IO (D10 Int)4*** Exception: user error (d10 must be less than 10)%d10 Convert an £ to a ' if it is within the range 0 to 9, or «! with an error message otherwise.+ is a specialized version of this function.', is a more general version of this function. integerD10Fail 5 :: IO (D10 Int)[d10|5|]!integerD10Fail 12 :: IO (D10 Int)7*** Exception: user error (d10 must be between 0 and 9)#integerD10Fail (-5) :: IO (D10 Int)7*** Exception: user error (d10 must be between 0 and 9)&d10 Convert an € to a ' if it is within the range 0 to 9, or «! with an error message otherwise.+ is a specialized version of this function.', is a more general version of this function.intD10Fail 5 :: IO (D10 Int)[d10|5|]intD10Fail 12 :: IO (D10 Int)7*** Exception: user error (d10 must be between 0 and 9)intD10Fail (-5) :: IO (D10 Int)7*** Exception: user error (d10 must be between 0 and 9)'d10'Convert a number of a type that has an ₯ instance to a ) if it falls within the range 0 to 9, or «" with an error message otherwise., , , , $, %, and &/ are all specialized versions of this function..integralD10Fail (5 :: Integer) :: IO (D10 Int)[d10|5|]/integralD10Fail (12 :: Integer) :: IO (D10 Int)7*** Exception: user error (d10 must be between 0 and 9)1integralD10Fail ((-5) :: Integer) :: IO (D10 Int)7*** Exception: user error (d10 must be between 0 and 9)(d10Produces an expression of type  a0 that can be used in a Template Haskell splice.d10Nat $(d10Exp 5)5d10Nat $(d10Exp 12)...... d10 must be between 0 and 9...You may also be interested in ,/, a quasi-quoter which does something similar.)d10Produces an expression of type [ a]0 that can be used in a Template Haskell splice.d10Nat <$> $(d10ListExp "")[]d10Nat <$> $(d10ListExp "5")[5]d10Nat <$> $(d10ListExp "58")[5,8]d10Nat <$> $(d10ListExp "a")...... d10 must be between 0 and 9...You may also be interested in -/, a quasi-quoter which does something similar.*d10GProduces a pattern that can be used in a splice to match a particular  a value.:{ case (charD10Maybe '5') of& Just $(d10Pat [d10|4|]) -> "A"& Just $(d10Pat [d10|5|]) -> "B"& _ -> "C":}"B"You may wish to use the , quasi-quoter instead.+d10OProduces a pattern that can be used in a splice to match a particular list of  a values.:{$ case (strD10ListMaybe "56") of/ Just $(d10ListPat [d10list|42|]) -> "A"/ Just $(d10ListPat [d10list|56|]) -> "B"/ _ -> "C":}"B"You may wish to use the - quasi-quoter instead.,d10A single base-10 digit.IThis quasi-quoter, when used as an expression, produces a value of type  a.d10Nat [d10|5|]5d10Nat [d10|a|]...... d10 must be between 0 and 9...d10Nat [d10|58|]..."... d10 must be a single character...0This quasi-quoter can also be used as a pattern.:{ case (charD10Maybe '5') of Just [d10|4|] -> "A" Just [d10|5|] -> "B" _ -> "C":}"B":{ case (charD10Maybe '5') of Just [d10|x|] -> "A" Just [d10|5|] -> "B" _ -> "C":}...... d10 must be between 0 and 9...-d10A list of base-10 digits.IThis quasi-quoter, when used as an expression, produces a value of type [ a].d10Nat <$> [d10list||][]d10Nat <$> [d10list|5|][5]d10Nat <$> [d10list|58|][5,8]d10Nat <$> [d10list|a|]...... d10 must be between 0 and 9...0This quasi-quoter can also be used as a pattern.:{ case [d10list|56|] of [d10list|41|] -> "A" [d10list|56|] -> "B" _ -> "C":}"B":{ case [d10list|56|] of [d10list|4x|] -> "A" [d10list|56|] -> "B" _ -> "C":}...... d10 must be between 0 and 9....d10Addition modulo 10.[d10|2|] + [d10|3|][d10|5|][d10|6|] + [d10|7|][d10|3|]/d10Subtraction modulo 10.[d10|7|] - [d10|5|][d10|2|][d10|3|] - [d10|7|][d10|6|]0d10Multiplication modulo 10.[d10|2|] * [d10|4|][d10|8|][d10|7|] * [d10|8|][d10|6|]1d108Shows base-10 digits using the quasiquoters defined in  Data.D10.Char$. A single digit is displayed using ,'. A list of digits is displayed using -.+  !"#$%&'()*+,-./0+,-()*+ ! "# $ % & './0None/:kh+7d10A   value between '0' and '9'.The  Data.D10.Char2 module provides many functions for constructing 7 values, including: G :: £ -> § 7 @ :: £ -> 7 With the  QuasiQuotes' GHC extension enabled, you can write 7" literals using the quasi-quoters \ and ].8d10ŸThe constructor's name include the word "unsafe" as a reminder that you should generally avoid using it directly, because it allows constructing invalid 7 values.9d10 Convert a 7 to its underlying   representation.d10Char [d10|7|]'7':d10 Convert a 7 to a ‘. : x = [9 x]d10Str [d10|7|]"7";d10 Convert a 7 to a ’.>, is a more general version of this function.d10Nat [d10|7|]7<d10 Convert a 7 to an £.>, is a more general version of this function.d10Integer [d10|7|]7=d10 Convert a 7 to an €.>, is a more general version of this function.d10Int [d10|7|]7>d10 Convert a 7 to any kind of number with a ¨ instance..Specialized versions of this function include ;, <, and =.d10Num [d10|7|] :: Integer7?d10The 74 which is uniquely congruent modulo 10 to the given ’.B, is a more general version of this function. natMod10 56[d10|6|]@d10The 74 which is uniquely congruent modulo 10 to the given £.B, is a more general version of this function.integerMod10 56[d10|6|]integerMod10 (-56)[d10|4|]Ad10The 74 which is uniquely congruent modulo 10 to the given €.B, is a more general version of this function. intMod10 56[d10|6|]intMod10 (-56)[d10|4|]Bd10The 7e which is uniquely congruent modulo 10 to the given number (whose type must have an instance of the ₯ class)..Specialized versions of this function include ?, @, and A.integralMod10 (56 :: Integer)[d10|6|] integralMod10 ((-56) :: Integer)[d10|4|]Cd10 Convert a   to a 7 if it is within the range '0' to '9' , or produce © otherwise.  x =  (C x)Q, is a more general version of this function.charD10Maybe '5' Just [d10|5|]charD10Maybe 'a'NothingDd10 Convert a ‘ to a 7Q if it consists of exactly one character and that character is within the range '0' to '9', or produce © otherwise.  x =  (D x)R, is a more general version of this function.strD10Maybe "5" Just [d10|5|]strD10Maybe "a"NothingstrD10Maybe "58"NothingEd10 Convert a ‘ to a list of 7> if all of the characters in the string are within the range '0' to '9', or produce © otherwise.  x =  (E x)S, is a more general version of this function.strD10ListMaybe "5"Just [d10list|5|]strD10ListMaybe "a"NothingstrD10ListMaybe "58"Just [d10list|58|]Fd10 Convert a ’ to a 7$ if it is less than 10, or produce © otherwise.  x =  (F x)I, T, and W- are more general versions of this function. natD10Maybe 5 Just [d10|5|]natD10Maybe 12NothingGd10 Convert an £ to a 7/ if it is within the range 0 to 9, or produce © otherwise.  x =  (G x)I, U, and W- are more general versions of this function.integerD10Maybe 5 Just [d10|5|]integerD10Maybe 12NothingintegerD10Maybe (-5)NothingHd10 Convert an € to a 7/ if it is within the range 0 to 9, or produce © otherwise.  x =  (H x)I, V, and W- are more general versions of this function. intD10Maybe 5 Just [d10|5|]intD10Maybe 12NothingintD10Maybe (-5)NothingId10 Construct a 7! from any kind of number with an ₯ instance, or produce ©/ if the number falls outside the range 0 to 9.  x =  (I x).Specialized versions of this function include F, G, and H.W, is a more general version of this function.integralD10Maybe (5 :: Integer) Just [d10|5|] integralD10Maybe (12 :: Integer)Nothing"integralD10Maybe ((-5) :: Integer)NothingJd10 Convert a   to a 7 if it is within the range '0' to '9', or ͺ! with an error message otherwise.charD10Either '5'Right [d10|5|]charD10Either 'a'"Left "d10 must be between 0 and 9"Kd10 Convert a ‘ to a 7N if it consists of a single character and that character is within the range '0' to '9', or ͺ! with an error message otherwise.strD10Either "5"Right [d10|5|]strD10Either "a""Left "d10 must be between 0 and 9"strD10Either "58"%Left "d10 must be a single character"Ld10 Convert a ‘ to a 7? if all of the characters in the string fall within the range '0' to '9', or ͺ" with an error message otherwise.strD10ListEither "5"Right [d10list|5|]strD10ListEither "a""Left "d10 must be between 0 and 9"strD10ListEither "58"Right [d10list|58|]Md10 Convert a ’ to a 7 if it is less than 10, or ͺ! with an error message otherwise.natD10Either 5Right [d10|5|]natD10Either 12Left "d10 must be less than 10"Nd10 Convert an £ to a 7' if it is within the range 0 to 9, or ͺ! with an error message otherwise.integerD10Either 5Right [d10|5|]integerD10Either 12"Left "d10 must be between 0 and 9"integerD10Either (-5)"Left "d10 must be between 0 and 9"Od10 Convert an € to a 7' if it is within the range 0 to 9, or ͺ! with an error message otherwise.intD10Either 5Right [d10|5|]intD10Either 12"Left "d10 must be between 0 and 9"intD10Either (-5)"Left "d10 must be between 0 and 9"Pd10'Convert a number of a type that has an ₯ instance to a 7) if it falls within the range 0 to 9, or ͺ" with an error message otherwise. integralD10Either (5 :: Integer)Right [d10|5|]!integralD10Either (12 :: Integer)"Left "d10 must be between 0 and 9"#integralD10Either ((-5) :: Integer)"Left "d10 must be between 0 and 9"Qd10 Convert a   to a 7 if it is within the range '0' to '9', or «! with an error message otherwise.C+ is a specialized version of this function.charD10Fail '5' :: IO D10[d10|5|]charD10Fail 'a' :: IO D107*** Exception: user error (d10 must be between 0 and 9)Rd10 Convert a ‘ to a 7N if it consists of a single character and that character is within the range '0' to '9', or «! with an error message otherwise.D+ is a specialized version of this function.strD10Fail "5" :: IO D10[d10|5|]strD10Fail "a" :: IO D107*** Exception: user error (d10 must be between 0 and 9)strD10Fail "58" :: IO D10:*** Exception: user error (d10 must be a single character)Sd10 Convert a ‘ to a 7? if all of the characters in the string fall within the range '0' to '9', or «" with an error message otherwise.E+ is a specialized version of this function.strD10ListFail "5" :: IO [D10] [d10list|5|]strD10ListFail "a" :: IO [D10]7*** Exception: user error (d10 must be between 0 and 9)strD10ListFail "58" :: IO [D10] [d10list|58|]Td10 Convert a ’ to a 7 if it is less than 10, or «! with an error message otherwise.F+ is a specialized version of this function.W, is a more general version of this function.natD10Fail 5 :: IO D10[d10|5|]natD10Fail 12 :: IO D104*** Exception: user error (d10 must be less than 10)Ud10 Convert an £ to a 7' if it is within the range 0 to 9, or «! with an error message otherwise.G+ is a specialized version of this function.W, is a more general version of this function.integerD10Fail 5 :: IO D10[d10|5|]integerD10Fail 12 :: IO D107*** Exception: user error (d10 must be between 0 and 9)integerD10Fail (-5) :: IO D107*** Exception: user error (d10 must be between 0 and 9)Vd10 Convert an € to a 7' if it is within the range 0 to 9, or «! with an error message otherwise.H+ is a specialized version of this function.W, is a more general version of this function.intD10Fail 5 :: IO D10[d10|5|]intD10Fail 12 :: IO D107*** Exception: user error (d10 must be between 0 and 9)intD10Fail (-5) :: IO D107*** Exception: user error (d10 must be between 0 and 9)Wd10'Convert a number of a type that has an ₯ instance to a 7) if it falls within the range 0 to 9, or «" with an error message otherwise.F, G, H, I, T, U, and V/ are all specialized versions of this function.(integralD10Fail (5 :: Integer) :: IO D10[d10|5|])integralD10Fail (12 :: Integer) :: IO D107*** Exception: user error (d10 must be between 0 and 9)+integralD10Fail ((-5) :: Integer) :: IO D107*** Exception: user error (d10 must be between 0 and 9)Xd10Produces an expression of type 70 that can be used in a Template Haskell splice.d10Nat $(d10Exp 5)5d10Nat $(d10Exp 12)...... d10 must be between 0 and 9...You may also be interested in \/, a quasi-quoter which does something similar.Yd10Produces an expression of type [7]0 that can be used in a Template Haskell splice.d10Nat <$> $(d10ListExp "")[]d10Nat <$> $(d10ListExp "5")[5]d10Nat <$> $(d10ListExp "58")[5,8]d10Nat <$> $(d10ListExp "a")...... d10 must be between 0 and 9...You may also be interested in ]/, a quasi-quoter which does something similar.Zd10GProduces a pattern that can be used in a splice to match a particular 7 value.:{ case (charD10Maybe '5') of& Just $(d10Pat [d10|4|]) -> "A"& Just $(d10Pat [d10|5|]) -> "B"& _ -> "C":}"B"You may wish to use the \ quasi-quoter instead.[d10OProduces a pattern that can be used in a splice to match a particular list of 7 values.:{$ case (strD10ListMaybe "56") of/ Just $(d10ListPat [d10list|42|]) -> "A"/ Just $(d10ListPat [d10list|56|]) -> "B"/ _ -> "C":}"B"You may wish to use the ] quasi-quoter instead.\d10A single base-10 digit.IThis quasi-quoter, when used as an expression, produces a value of type 7.d10Nat [d10|5|]5d10Nat [d10|a|]...... d10 must be between 0 and 9...d10Nat [d10|58|]..."... d10 must be a single character...0This quasi-quoter can also be used as a pattern.:{ case (charD10Maybe '5') of Just [d10|4|] -> "A" Just [d10|5|] -> "B" _ -> "C":}"B":{ case (charD10Maybe '5') of Just [d10|x|] -> "A" Just [d10|5|] -> "B" _ -> "C":}...... d10 must be between 0 and 9...]d10A list of base-10 digits.IThis quasi-quoter, when used as an expression, produces a value of type [7].d10Nat <$> [d10list||][]d10Nat <$> [d10list|5|][5]d10Nat <$> [d10list|58|][5,8]d10Nat <$> [d10list|a|]...... d10 must be between 0 and 9...0This quasi-quoter can also be used as a pattern.:{ case [d10list|56|] of [d10list|41|] -> "A" [d10list|56|] -> "B" _ -> "C":}"B":{ case [d10list|56|] of [d10list|4x|] -> "A" [d10list|56|] -> "B" _ -> "C":}...... d10 must be between 0 and 9...^d10Addition modulo 10.[d10|2|] + [d10|3|][d10|5|][d10|6|] + [d10|7|][d10|3|]_d10Subtraction modulo 10.[d10|7|] - [d10|5|][d10|2|][d10|3|] - [d10|7|][d10|6|]`d10Multiplication modulo 10.[d10|2|] * [d10|4|][d10|8|][d10|7|] * [d10|8|][d10|6|]ad108Shows base-10 digits using the quasiquoters defined in  Data.D10.Char$. A single digit is displayed using \'. A list of digits is displayed using ].+789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`+78\]XYZ[9CJQ:DKRELS;FMT?<GNU@=HOVA>IPWB^_`None:k ‚3gd10A whole number between 0 and 9.hd10Zeroid10Onejd10Twokd10Threeld10Fourmd10Fivend10Sixod10Sevenpd10Eightqd10Ninerd10 Convert a g to its underlying   representation. d10Char D7'7'sd10 Convert a g to a ‘. s x = [r x] d10Str D7"7"td10 Convert a g to a ’.w, is a more general version of this function. d10Nat D77ud10 Convert a g to an £.w, is a more general version of this function. d10Integer D77vd10 Convert a g to an €.w, is a more general version of this function. d10Int D77wd10 Convert a g to any kind of number with a ¨ instance..Specialized versions of this function include t, u, and v.d10Num D7 :: Integer7xd10The g4 which is uniquely congruent modulo 10 to the given ’.{, is a more general version of this function. natMod10 56D6yd10The g4 which is uniquely congruent modulo 10 to the given £.{, is a more general version of this function.integerMod10 56D6integerMod10 (-56)D4zd10The g4 which is uniquely congruent modulo 10 to the given €.{, is a more general version of this function. intMod10 56D6intMod10 (-56)D4{d10The ge which is uniquely congruent modulo 10 to the given number (whose type must have an instance of the ₯ class)..Specialized versions of this function include x, y, and z.integralMod10 (56 :: Integer)D6 integralMod10 ((-56) :: Integer)D4|d10 Convert a   to a g if it is within the range '0' to '9' , or produce © otherwise.  x =  (| x)Š, is a more general version of this function.charD10Maybe '5'Just D5charD10Maybe 'a'Nothing}d10 Convert a ‘ to a gQ if it consists of exactly one character and that character is within the range '0' to '9', or produce © otherwise.  x =  (} x)‹, is a more general version of this function.strD10Maybe "5"Just D5strD10Maybe "a"NothingstrD10Maybe "58"Nothing~d10 Convert a ‘ to a list of g> if all of the characters in the string are within the range '0' to '9', or produce © otherwise.  x =  (~ x)Œ, is a more general version of this function.strD10ListMaybe "5" Just [D5]strD10ListMaybe "a"NothingstrD10ListMaybe "58" Just [D5,D8]d10 Convert a ’ to a g$ if it is less than 10, or produce © otherwise.  x =  ( x)‚, , and - are more general versions of this function. natD10Maybe 5Just D5natD10Maybe 12Nothing€d10 Convert an £ to a g/ if it is within the range 0 to 9, or produce © otherwise.  x =  (€ x)‚, Ž, and - are more general versions of this function.integerD10Maybe 5Just D5integerD10Maybe 12NothingintegerD10Maybe (-5)Nothingd10 Convert an € to a g/ if it is within the range 0 to 9, or produce © otherwise.  x =  ( x)‚, , and - are more general versions of this function. intD10Maybe 5Just D5intD10Maybe 12NothingintD10Maybe (-5)Nothing‚d10 Construct a g! from any kind of number with an ₯ instance, or produce ©/ if the number falls outside the range 0 to 9.  x =  (‚ x).Specialized versions of this function include , €, and ., is a more general version of this function.integralD10Maybe (5 :: Integer)Just D5 integralD10Maybe (12 :: Integer)Nothing"integralD10Maybe ((-5) :: Integer)Nothingƒd10 Convert a   to a g if it is within the range '0' to '9', or ͺ! with an error message otherwise.charD10Either '5'Right D5charD10Either 'a'"Left "d10 must be between 0 and 9"„d10 Convert a ‘ to a gN if it consists of a single character and that character is within the range '0' to '9', or ͺ! with an error message otherwise.strD10Either "5"Right D5strD10Either "a""Left "d10 must be between 0 and 9"strD10Either "58"%Left "d10 must be a single character"…d10 Convert a ‘ to a g? if all of the characters in the string fall within the range '0' to '9', or ͺ" with an error message otherwise.strD10ListEither "5" Right [D5]strD10ListEither "a""Left "d10 must be between 0 and 9"strD10ListEither "58" Right [D5,D8]†d10 Convert a ’ to a g if it is less than 10, or ͺ! with an error message otherwise.natD10Either 5Right D5natD10Either 12Left "d10 must be less than 10"‡d10 Convert an £ to a g' if it is within the range 0 to 9, or ͺ! with an error message otherwise.integerD10Either 5Right D5integerD10Either 12"Left "d10 must be between 0 and 9"integerD10Either (-5)"Left "d10 must be between 0 and 9"ˆd10 Convert an € to a g' if it is within the range 0 to 9, or ͺ! with an error message otherwise.intD10Either 5Right D5intD10Either 12"Left "d10 must be between 0 and 9"intD10Either (-5)"Left "d10 must be between 0 and 9"‰d10'Convert a number of a type that has an ₯ instance to a g) if it falls within the range 0 to 9, or ͺ" with an error message otherwise. integralD10Either (5 :: Integer)Right D5!integralD10Either (12 :: Integer)"Left "d10 must be between 0 and 9"#integralD10Either ((-5) :: Integer)"Left "d10 must be between 0 and 9"Šd10 Convert a   to a g if it is within the range '0' to '9', or «! with an error message otherwise.|+ is a specialized version of this function.charD10Fail '5' :: IO D10D5charD10Fail 'a' :: IO D107*** Exception: user error (d10 must be between 0 and 9)‹d10 Convert a ‘ to a gN if it consists of a single character and that character is within the range '0' to '9', or «! with an error message otherwise.}+ is a specialized version of this function.strD10Fail "5" :: IO D10D5strD10Fail "a" :: IO D107*** Exception: user error (d10 must be between 0 and 9)strD10Fail "58" :: IO D10:*** Exception: user error (d10 must be a single character)Œd10 Convert a ‘ to a g? if all of the characters in the string fall within the range '0' to '9', or «" with an error message otherwise.~+ is a specialized version of this function.strD10ListFail "5" :: IO [D10][D5]strD10ListFail "a" :: IO [D10]7*** Exception: user error (d10 must be between 0 and 9)strD10ListFail "58" :: IO [D10][D5,D8]d10 Convert a ’ to a g if it is less than 10, or «! with an error message otherwise.+ is a specialized version of this function., is a more general version of this function.natD10Fail 5 :: IO D10D5natD10Fail 12 :: IO D104*** Exception: user error (d10 must be less than 10)Žd10 Convert an £ to a g' if it is within the range 0 to 9, or «! with an error message otherwise.€+ is a specialized version of this function., is a more general version of this function.integerD10Fail 5 :: IO D10D5integerD10Fail 12 :: IO D107*** Exception: user error (d10 must be between 0 and 9)integerD10Fail (-5) :: IO D107*** Exception: user error (d10 must be between 0 and 9)d10 Convert an € to a g' if it is within the range 0 to 9, or «! with an error message otherwise.+ is a specialized version of this function., is a more general version of this function.intD10Fail 5 :: IO D10D5intD10Fail 12 :: IO D107*** Exception: user error (d10 must be between 0 and 9)intD10Fail (-5) :: IO D107*** Exception: user error (d10 must be between 0 and 9)d10'Convert a number of a type that has an ₯ instance to a g) if it falls within the range 0 to 9, or «" with an error message otherwise., €, , ‚, , Ž, and / are all specialized versions of this function.(integralD10Fail (5 :: Integer) :: IO D10D5)integralD10Fail (12 :: Integer) :: IO D107*** Exception: user error (d10 must be between 0 and 9)+integralD10Fail ((-5) :: Integer) :: IO D107*** Exception: user error (d10 must be between 0 and 9)‘d10Produces an expression of type g0 that can be used in a Template Haskell splice. $(d10Exp 5)D5 $(d10Exp 12)...... d10 must be between 0 and 9...You may also be interested in •/, a quasi-quoter which does something similar.’d10Produces an expression of type [g]0 that can be used in a Template Haskell splice.$(d10ListExp "")[]$(d10ListExp "5")[D5]$(d10ListExp "58")[D5,D8]$(d10ListExp "a")...... d10 must be between 0 and 9...You may also be interested in –/, a quasi-quoter which does something similar.“d10GProduces a pattern that can be used in a splice to match a particular g value.:{ case (charD10Maybe '5') of Just $(d10Pat D4) -> "A" Just $(d10Pat D5) -> "B" _ -> "C":}"B"ZYou are unlikely to write any code that resembles this example, since you can just write D4 instead of  $(d10Pat D4)e. Rather, this function exists to help implement other things related to Template Haskell, such as ” and •.”d10OProduces a pattern that can be used in a splice to match a particular list of g values.:{$ case (strD10ListMaybe "56") of* Just $(d10ListPat [D4, D2]) -> "A"* Just $(d10ListPat [D5, D6]) -> "B"/ _ -> "C":}"B"ZYou are unlikely to write any code that resembles this example, since you can just write [D4, D2] instead of $(d10Pat [D4, D2])e. Rather, this function exists to help implement other things related to Template Haskell, such as –.•d10A single base-10 digit.1This isn't very useful, since you can just write m\ instead of '[d10|5|]'. It is included only for completeness, because each of the modules  Data.D10.Char and  Data.D10.Num! defines a similar quasi-quoter.IThis quasi-quoter, when used as an expression, produces a value of type g.[d10|5|]D5[d10|a|]...... d10 must be between 0 and 9... [d10|58|]..."... d10 must be a single character...0This quasi-quoter can also be used as a pattern.:{ case (charD10Maybe '5') of Just [d10|4|] -> "A" Just [d10|5|] -> "B" _ -> "C":}"B":{ case (charD10Maybe '5') of Just [d10|x|] -> "A" Just [d10|5|] -> "B" _ -> "C":}...... d10 must be between 0 and 9...–d10A list of base-10 digits.IThis quasi-quoter, when used as an expression, produces a value of type [g]. [d10list||][] [d10list|5|][D5] [d10list|58|][D5,D8] [d10list|a|]...... d10 must be between 0 and 9...0This quasi-quoter can also be used as a pattern.:{ case [d10list|56|] of [d10list|41|] -> "A" [d10list|56|] -> "B" _ -> "C":}"B":{ case [d10list|56|] of [d10list|4x|] -> "A" [d10list|56|] -> "B" _ -> "C":}...... d10 must be between 0 and 9...—d10Addition modulo 10.D2 + D3D5D6 + D7D3˜d10Subtraction modulo 10.D7 - D5D2D3 - D7D6™d10Multiplication modulo 10.D2 * D4D8D7 * D8D63gihjklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™3gihjklmnopq•–‘’“”r|ƒŠs}„‹~…Œt†xu€‡Žyvˆzw‚‰{—˜™¬      !"#$%&'()*+,-./0123456789:;<= !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFG !"#$%&'()*+,-./01234567:9;=<8HIJKLMKNOPQRHISKTUKVWKXYKVZKX[K\]K^_`"d10-0.2.1.2-4Xy3pc6gtZZIuoJR4BJM9mData.D10.Predicate Data.D10.Num Data.D10.Char Data.D10.Safe Data.MaybeisJust isD10CharisD10Str isD10ListStrisD10Nat isD10IntegerisD10Int isD10IntegralD10 D10_Unsafed10Chard10Strd10Nat d10Integerd10Intd10NumnatMod10 integerMod10intMod10 integralMod10 charD10Maybe strD10MaybestrD10ListMaybe natD10MaybeintegerD10Maybe intD10MaybeintegralD10Maybe charD10Either strD10EitherstrD10ListEither natD10EitherintegerD10Either intD10EitherintegralD10Either charD10Fail strD10FailstrD10ListFail natD10FailintegerD10Fail intD10FailintegralD10Faild10Exp d10ListExpd10Pat d10ListPatd10d10list+-* $fShowD10 $fEnumD10 $fBoundedD10$fEqD10$fOrdD10 $fLiftD10D0D1D2D3D4D5D6D7D8D9ghc-prim GHC.TypesCharbaseGHC.BaseString GHC.NaturalNatural integer-gmpGHC.Integer.TypeIntegerIntGHC.RealIntegralGHC.Num fromInteger GHC.MaybeMaybeNumNothing Data.EitherLeftControl.Monad.Failfail