XgQ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None 0<=DR$*A data type with ten nullary constructors.%Catamorphism for Digit.0foldDigit q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 D0 == q00foldDigit q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 D1 == q10foldDigit q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 D2 == q20foldDigit q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 D3 == q30foldDigit q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 D4 == q40foldDigit q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 D5 == q50foldDigit q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 D6 == q60foldDigit q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 D7 == q70foldDigit q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 D8 == q80foldDigit q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 D9 == q9&Modulus with 10.mod10 00mod10 11mod10 88mod10 99mod10 100mod10 900mod10 911 mod10 (-1)9 mod10 (-12)8'Absolute value of remainder 10. absrem10 00 absrem10 11 absrem10 88 absrem10 99 absrem10 100 absrem10 900 absrem10 911 absrem10 (-1)1absrem10 (-12)2(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)*A QuasiQuoter for any range of Digit.  digitQ|4| :: Digit 4Vnamed [digitQ|4|] = "four" named [digitQ|$x|] = "not four, " ++ show x ++ " instead"+mod10D x = let y = mod x 10 in [digitQ|$y|]+ D0 /+/ D0(0,0) D0 /+/ D1(0,1) D1 /+/ D0(0,1) D4 /+/ D5(0,9) D5 /+/ D5(1,0) D5 /+/ D6(1,1) D8 /+/ D7(1,5) D9 /+/ D9(1,8)- '5' ^? digitJust 5 '0' ^? digitJust 0 '9' ^? digitJust 9 'a' ^? digitNothing '@' ^? digitNothingdigit # D5 :: Char'5'digit # D9 :: Char'9'digit # D0 :: Char'0'.(5 :: Word) ^? digitIntegralJust 5(0 :: Word) ^? digitIntegralJust 0(9 :: Word) ^? digitIntegralJust 9(10 :: Word) ^? digitIntegralNothing((-5) :: Word) ^? digitIntegralNothingdigitIntegral # D5 :: Word5digitIntegral # D9 :: Word9digitIntegral # D0 :: Word0/((5 :: Const Int String) ^? digitIntegralJust 5((0 :: Const Int String) ^? digitIntegralJust 0((9 :: Const Int String) ^? digitIntegralJust 9)(10 :: Const Int String) ^? digitIntegralNothing+((-5) :: Const Int String) ^? digitIntegralNothing&digitIntegral # D5 :: Const Int StringConst 5&digitIntegral # D9 :: Const Int StringConst 9&digitIntegral # D0 :: Const Int StringConst 00$(5 :: Identity Int) ^? digitIntegralJust 5$(0 :: Identity Int) ^? digitIntegralJust 0$(9 :: Identity Int) ^? digitIntegralJust 9%(10 :: Identity Int) ^? digitIntegralNothing'((-5) :: Identity Int) ^? digitIntegralNothing"digitIntegral # D5 :: Identity Int Identity 5"digitIntegral # D9 :: Identity Int Identity 9"digitIntegral # D0 :: Identity Int Identity 01(5 :: Integer) ^? digitIntegralJust 5(0 :: Integer) ^? digitIntegralJust 0(9 :: Integer) ^? digitIntegralJust 9 (10 :: Integer) ^? digitIntegralNothing"((-5) :: Integer) ^? digitIntegralNothingdigitIntegral # D5 :: Integer5digitIntegral # D9 :: Integer9digitIntegral # D0 :: Integer02(5 :: Int64) ^? digitIntegralJust 5(0 :: Int64) ^? digitIntegralJust 0(9 :: Int64) ^? digitIntegralJust 9(10 :: Int64) ^? digitIntegralNothing ((-5) :: Int64) ^? digitIntegralNothingdigitIntegral # D5 :: Int645digitIntegral # D9 :: Int649digitIntegral # D0 :: Int6403(5 :: Int32) ^? digitIntegralJust 5(0 :: Int32) ^? digitIntegralJust 0(9 :: Int32) ^? digitIntegralJust 9(10 :: Int32) ^? digitIntegralNothing ((-5) :: Int32) ^? digitIntegralNothingdigitIntegral # D5 :: Int325digitIntegral # D9 :: Int329digitIntegral # D0 :: Int3204(5 :: Int16) ^? digitIntegralJust 5(0 :: Int16) ^? digitIntegralJust 0(9 :: Int16) ^? digitIntegralJust 9(10 :: Int16) ^? digitIntegralNothing ((-5) :: Int16) ^? digitIntegralNothingdigitIntegral # D5 :: Int165digitIntegral # D9 :: Int169digitIntegral # D0 :: Int160 5(5 :: Int8) ^? digitIntegralJust 5(0 :: Int8) ^? digitIntegralJust 0(9 :: Int8) ^? digitIntegralJust 9(10 :: Int8) ^? digitIntegralNothing((-5) :: Int8) ^? digitIntegralNothingdigitIntegral # D5 :: Int85digitIntegral # D9 :: Int89digitIntegral # D0 :: Int806(5 :: Int) ^? digitIntegralJust 5(0 :: Int) ^? digitIntegralJust 0(9 :: Int) ^? digitIntegralJust 9(10 :: Int) ^? digitIntegralNothing((-5) :: Int) ^? digitIntegralNothingdigitIntegral # D5 :: Int5digitIntegral # D9 :: Int9digitIntegral # D0 :: Int0O  !"#$% Zero.One.Two.Three.Four.Five.Six.Seven.Eight. Nine. The digit to fold.&'()*+,-./0123456789:;<=>?@ABC,  !"#$%&'()*+,$%"# !   &'()*+.   !"#$ %&'()*+,-./0123456789:;<=>?@ABCNone 09;<=DRIJOPQRSTUVWXYZ[\]^_`ab IJOPQRSTU IJSTQROPUIJOPQRSTUVWXYZ[\]^_`abNone 09;<=DRefklmnopqrstuvwxyz{|}~ efklmnopq efopmnklqefklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMMNOPQRSTUVWXYZ[\]^_`abcdefghhijklmnopqrstuvwxyz{|}~#  "digit-0.3.0-91DGp1EmMKcBqTbbgl33VC Data.Digit Data.Digits1 Data.Digits ManyDigitdigitTAsDigitdigitD9d9x9D8d8x8D7d7x7D6d6x6D5d5x5D4d4x4D3d3x3D2d2x2D1d1x1D0d0x0HasDigithasdigitDigit foldDigitmod10absrem10divMod10 parsedigitdigitQ/+/$fManyDigitDigit $fAsDigitChar $fAsDigitWord$fAsDigitConst$fAsDigitIdentity$fAsDigitInteger$fAsDigitInt64$fAsDigitInt32$fAsDigitInt16 $fAsDigitInt8 $fAsDigitInt$fAsDigitDigit $fD9Digit $fD8Digit $fD7Digit $fD6Digit $fD5Digit $fD4Digit $fD3Digit $fD2Digit $fD1Digit $fD0Digit$fHasDigitDigit $fShowDigit $fEqDigit $fOrdDigit $fEnumDigit$fBoundedDigit $fDataDigitDigits1 $fEqDigits1 $fOrdDigits1 $fShowDigits1 $fDataDigits1 ManyDigits1digits1T HasDigits1digits1L AsDigits1_Digits1parsedigitlist1$fManyDigitDigits1 $fIxedDigits1$fConsDigits1Digits1DigitDigit$fSnocDigits1Digits1DigitDigit$fEachDigits1Digits1DigitDigit$fReversingDigits1$fPlatedDigits1$fSemigroupDigits1$fManyDigits1Digits1$fHasDigits1Digits1 $fAsDigits1[]$fAsDigits1NonEmpty$fAsDigits1Digits1$fWrappedDigits1$fRewrappedDigits1tDigits $fEqDigits $fOrdDigits $fShowDigits $fDataDigits ManyDigitsdigitsT HasDigitsdigitsLAsDigits_Digits parsedigits$fManyDigitDigits$fAsDigits1Digits$fMonoidDigits$fSemigroupDigits$fReversingDigits$fPlatedDigits $fIxedDigits$fEachDigitsDigitsDigitDigit$fAsEmptyDigits$fSnocDigitsDigitsDigitDigit$fConsDigitsDigitsDigitDigit$fManyDigitsDigits$fHasDigitsDigits $fAsDigits[]$fAsDigitsDigits$fWrappedDigits$fRewrappedDigitst digitIntegralD:R:UnwrappedDigits1D:R:UnwrappedDigits