練習問題 5.1.2

10億未満の正の数を処理するように解を一般化せよ.


convert9
を追加し,これを
convert
とする.


convert9   ::  Int -> String
convert9   =   combine9 . digits9

digits9    ::  Int -> (Int,Int)
digits9    =   (`divMod` 1000000)

combine9            ::  (Int,Int) -> String
combine9 (0,h+1)    =   convert6 (h+1)
combine9 (m+1,0)    =   convert3 (m+1) ++ " million"
combine9 (m+1,h+1)  =   convert3 (m+1) ++ " million " ++ convert6 (h+1)

convert :: Int -> String
convert = convert9