úÎ($.A      !"#$%&'()*+,-./0123456789:;<=>?@None0*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 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!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'",A prism for the list of digits in an integer1234 ^? digitsJust [1,2,3,4] 0 ^? digitsJust [] 1 ^? digitsJust [1] 90 ^? digits Just [9,0] 05 ^? digitsJust [5] 105 ^? digits Just [1,0,5](-1) ^? digitsNothing»> digits # [D0] 0digits # [D0, D1]1 digits # [D1]1digits # [D1, D2, D3]123digits # [D1, D0, D3]103digits # [D1, D0, D3, D0]1030#Modulus with 10.mod10 00mod10 11mod10 88mod10 99mod10 100mod10 900mod10 911 mod10 (-1)9$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|]H ABCDEFGHIJ Zero.One.Two.Three.Four.Five.Six.Seven.Eight. Nine. The digit to fold. !"#$%&'()*+,-./KL0123456789:;0  !"#$%&'()*+,-./0    !"#$%&'()*+,-./4    ABCDEFGHIJ !"#$%&'()*+,-./KL0123456789:;M      !"#$%&'()*+,-./0123456789:;<=>?@AB  CDE"digit-0.2.4-D4yfTvMv2OcATHQck19OgS Data.DigitD9d9D8d8D7d7D6d6D5d5D4d4D3d3D2d2D1d1D0d0Digit foldDigitx0x1x2x3x4x5x6x7x8x9digitdigitCdigitsmod10divMod10 parsedigit parsedigits parsedigits1 skipdigits skipdigits1 parsenotdigitparsenotdigitsparsenotdigits1 skipnotdigitsskipnotdigits1digitQ $fReadDigit $fShowDigit $fD9Digit $fD8Digit $fD7Digit $fD6Digit $fD5Digit $fD4Digit $fD3Digit $fD2Digit $fD1Digit $fD0Digit $fEqDigit $fOrdDigit $fEnumDigit$fBoundedDigit $fDataDigitdexpdpat