úÎ%Ý"ˆ)      !"#$%&'(None+*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|]A )*+,-./012 Zero.One.Two.Three.Four.Five.Six.Seven.Eight. Nine. The digit to fold. !"#$%&'(3456789:;<=>?@)  !"#$%&'()    !"#$%&'(-    )*+,-./012 !"#$%&'(3456789:;<=>?@A      !"#$%&'()*  +,-./0123456789digit_JUKzn7ir6R58GqxvTwwq2i Data.DigitD9d9D8d8D7d7D6d6D5d5D4d4D3d3D2d2D1d1D0d0Digit foldDigitx0x1x2x3x4x5x6x7x8x9digitdigitCdigitsmod10divMod10 parsedigit parsedigits parsedigits1digitQdexpdpat $fReadDigit $fShowDigit $fD9Digit $fD8Digit $fD7Digit $fD6Digit $fD5Digit $fD4Digit $fD3Digit $fD2Digit $fD1Digit $fD0Digit