! $2      !"#$%&'()*+,-./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.9Vi(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 ).d10The 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....d108Shows base-10 digits using the quasiquoters defined in  Data.D10.Char$. A single digit is displayed using ,'. A list of digits is displayed using -.(  !"#$%&'()*+,-(,-()*+ ! "# $ % & 'None.9i_(4d10A  value between '0' and '9'.The  Data.D10.Char2 module provides many functions for constructing 4 values, including: D ::  ->  4 = ::  -> 4 With the  QuasiQuotes' GHC extension enabled, you can write 4" literals using the quasi-quoters Y and Z.5d10The constructor's name include the word "unsafe" as a reminder that you should generally avoid using it directly, because it allows constructing invalid 4 values.6d10 Convert a 4 to its underlying  representation.d10Char [d10|7|]'7'7d10 Convert a 4 to a . 7 x = [6 x]d10Str [d10|7|]"7"8d10 Convert a 4 to a .;, is a more general version of this function.d10Nat [d10|7|]79d10 Convert a 4 to an .;, is a more general version of this function.d10Integer [d10|7|]7:d10 Convert a 4 to an .;, is a more general version of this function.d10Int [d10|7|]7;d10 Convert a 4 to any kind of number with a  instance..Specialized versions of this function include 8, 9, and :.d10Num [d10|7|] :: Integer7<d10The 44 which is uniquely congruent modulo 10 to the given .?, is a more general version of this function. natMod10 56[d10|6|]=d10The 44 which is uniquely congruent modulo 10 to the given .?, is a more general version of this function.integerMod10 56[d10|6|]integerMod10 (-56)[d10|4|]>d10The 44 which is uniquely congruent modulo 10 to the given .?, is a more general version of this function. intMod10 56[d10|6|]intMod10 (-56)[d10|4|]?d10The 4e 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|6|] integralMod10 ((-56) :: Integer)[d10|4|]@d10 Convert a  to a 4 if it is within the range '0' to '9' , or produce  otherwise.  x =  (@ x)N, is a more general version of this function.charD10Maybe '5' Just [d10|5|]charD10Maybe 'a'NothingAd10 Convert a  to a 4Q if it consists of exactly one character and that character is within the range '0' to '9', or produce  otherwise.  x =  (A x)O, is a more general version of this function.strD10Maybe "5" Just [d10|5|]strD10Maybe "a"NothingstrD10Maybe "58"NothingBd10 Convert a  to a list of 4> if all of the characters in the string are within the range '0' to '9', or produce  otherwise.  x =  (B x)P, is a more general version of this function.strD10ListMaybe "5"Just [d10list|5|]strD10ListMaybe "a"NothingstrD10ListMaybe "58"Just [d10list|58|]Cd10 Convert a  to a 4$ if it is less than 10, or produce  otherwise.  x =  (C x)F, Q, and T- are more general versions of this function. natD10Maybe 5 Just [d10|5|]natD10Maybe 12NothingDd10 Convert an  to a 4/ if it is within the range 0 to 9, or produce  otherwise.  x =  (D x)F, R, and T- are more general versions of this function.integerD10Maybe 5 Just [d10|5|]integerD10Maybe 12NothingintegerD10Maybe (-5)NothingEd10 Convert an  to a 4/ if it is within the range 0 to 9, or produce  otherwise.  x =  (E x)F, S, and T- are more general versions of this function. intD10Maybe 5 Just [d10|5|]intD10Maybe 12NothingintD10Maybe (-5)NothingFd10 Construct a 4! from any kind of number with an  instance, or produce / if the number falls outside the range 0 to 9.  x =  (F x).Specialized versions of this function include C, D, and E.T, is a more general version of this function.integralD10Maybe (5 :: Integer) Just [d10|5|] integralD10Maybe (12 :: Integer)Nothing"integralD10Maybe ((-5) :: Integer)NothingGd10 Convert a  to a 4 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"Hd10 Convert a  to a 4N 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"Id10 Convert a  to a 4? 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|]Jd10 Convert a  to a 4 if it is less than 10, or ! with an error message otherwise.natD10Either 5Right [d10|5|]natD10Either 12Left "d10 must be less than 10"Kd10 Convert an  to a 4' 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"Ld10 Convert an  to a 4' 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"Md10'Convert a number of a type that has an  instance to a 4) 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"Nd10 Convert a  to a 4 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[d10|5|]charD10Fail 'a' :: IO D107*** Exception: user error (d10 must be between 0 and 9)Od10 Convert a  to a 4N if it consists of a single character and that character is within the range '0' to '9', or ! with an error message otherwise.A+ 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)Pd10 Convert a  to a 4? if all of the characters in the string fall within the range '0' to '9', or " with an error message otherwise.B+ 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|]Qd10 Convert a  to a 4 if it is less than 10, or ! with an error message otherwise.C+ is a specialized version of this function.T, 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)Rd10 Convert an  to a 4' if it is within the range 0 to 9, or ! with an error message otherwise.D+ is a specialized version of this function.T, 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)Sd10 Convert an  to a 4' if it is within the range 0 to 9, or ! with an error message otherwise.E+ is a specialized version of this function.T, 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)Td10'Convert a number of a type that has an  instance to a 4) if it falls within the range 0 to 9, or " with an error message otherwise.C, D, E, F, Q, R, and S/ 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)Ud10Produces an expression of type 40 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 Y/, a quasi-quoter which does something similar.Vd10Produces an expression of type [4]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 Z/, a quasi-quoter which does something similar.Wd10GProduces a pattern that can be used in a splice to match a particular 4 value.:{ case (charD10Maybe '5') of& Just $(d10Pat [d10|4|]) -> "A"& Just $(d10Pat [d10|5|]) -> "B"& _ -> "C":}"B"You may wish to use the Y quasi-quoter instead.Xd10OProduces a pattern that can be used in a splice to match a particular list of 4 values.:{$ case (strD10ListMaybe "56") of/ Just $(d10ListPat [d10list|42|]) -> "A"/ Just $(d10ListPat [d10list|56|]) -> "B"/ _ -> "C":}"B"You may wish to use the Z quasi-quoter instead.Yd10A single base-10 digit.IThis quasi-quoter, when used as an expression, produces a value of type 4.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...Zd10A list of base-10 digits.IThis quasi-quoter, when used as an expression, produces a value of type [4].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...[d108Shows base-10 digits using the quasiquoters defined in  Data.D10.Char$. A single digit is displayed using Y'. A list of digits is displayed using Z.(456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ(45YZUVWX6@GN7AHOBIP8CJQ<9DKR=:ELS>;FMT?None9i0ad10A whole number between 0 and 9.bd10Zerocd10Onedd10Twoed10Threefd10Fourgd10Fivehd10Sixid10Sevenjd10Eightkd10Nineld10 Convert a a to its underlying  representation. d10Char D7'7'md10 Convert a a to a . m x = [l x] d10Str D7"7"nd10 Convert a a to a .q, is a more general version of this function. d10Nat D77od10 Convert a a to an .q, is a more general version of this function. d10Integer D77pd10 Convert a a to an .q, is a more general version of this function. d10Int D77qd10 Convert a a to any kind of number with a  instance..Specialized versions of this function include n, o, and p.d10Num D7 :: Integer7rd10The a4 which is uniquely congruent modulo 10 to the given .u, is a more general version of this function. natMod10 56D6sd10The a4 which is uniquely congruent modulo 10 to the given .u, is a more general version of this function.integerMod10 56D6integerMod10 (-56)D4td10The a4 which is uniquely congruent modulo 10 to the given .u, is a more general version of this function. intMod10 56D6intMod10 (-56)D4ud10The ae 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 r, s, and t.integralMod10 (56 :: Integer)D6 integralMod10 ((-56) :: Integer)D4vd10 Convert a  to a a if it is within the range '0' to '9' , or produce  otherwise.  x =  (v x), is a more general version of this function.charD10Maybe '5'Just D5charD10Maybe 'a'Nothingwd10 Convert a  to a aQ if it consists of exactly one character and that character is within the range '0' to '9', or produce  otherwise.  x =  (w x), is a more general version of this function.strD10Maybe "5"Just D5strD10Maybe "a"NothingstrD10Maybe "58"Nothingxd10 Convert a  to a list of a> if all of the characters in the string are within the range '0' to '9', or produce  otherwise.  x =  (x x), is a more general version of this function.strD10ListMaybe "5" Just [D5]strD10ListMaybe "a"NothingstrD10ListMaybe "58" Just [D5,D8]yd10 Convert a  to a a$ if it is less than 10, or produce  otherwise.  x =  (y x)|, , and - are more general versions of this function. natD10Maybe 5Just D5natD10Maybe 12Nothingzd10 Convert an  to a a/ if it is within the range 0 to 9, or produce  otherwise.  x =  (z x)|, , and - are more general versions of this function.integerD10Maybe 5Just D5integerD10Maybe 12NothingintegerD10Maybe (-5)Nothing{d10 Convert an  to a a/ 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 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 y, z, 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 a 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 aN 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 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 [D5]strD10ListEither "a""Left "d10 must be between 0 and 9"strD10ListEither "58" Right [D5,D8]d10 Convert a  to a a 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 a' 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 a' 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 a) 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 a if it is within the range '0' to '9', or ! with an error message otherwise.v+ 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 aN if it consists of a single character and that character is within the range '0' to '9', or ! with an error message otherwise.w+ 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 a? if all of the characters in the string fall within the range '0' to '9', or " with an error message otherwise.x+ 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 a if it is less than 10, or ! with an error message otherwise.y+ 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 a' if it is within the range 0 to 9, or ! with an error message otherwise.z+ 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 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 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 a) if it falls within the range 0 to 9, or " with an error message otherwise.y, z, {, |, , , 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 a0 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 [a]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 a 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 a 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 g\ 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 a.[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 [a]. [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...0acbdefghijklmnopqrstuvwxyz{|}~0acbdefghijklv}mw~xnyrozsp{tq|u      !"#$%&'()*+,-./0123456789: !"#$%&'()*+,-./0123456789:;<=>?@ABCD !"#$%&'()*+,-./01234768:95EFGHIJHKLMNOEFPHQRHSTHIUHSVHIWHXYHZ[\"d10-0.2.0.1-JtzAbOLbnJRGwwd2CU6klOData.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 fromIntegerMaybeNumNothing Data.EitherLeftControl.Monad.Failfail