module WordNumber where import Data.List (unfoldr, intercalate) import Data.Maybe (Maybe(..)) digitToWord :: Int -> String digitToWord 0 = "zero" digitToWord 1 = "one" digitToWord 2 = "two" digitToWord 3 = "three" digitToWord 4 = "four" digitToWord 5 = "five" digitToWord 6 = "six" digitToWord 7 = "seven" digitToWord 8 = "eight" digitToWord 9 = "nine" digitToWord _ = "" digits :: Int -> [Int] digits n = reverse $ unfoldr unfold n where unfold x | x == 0 = Nothing | otherwise = Just ((mod x 10), (div x 10)) wordNumber :: Int -> String wordNumber n = intercalate "-" $ map digitToWord (digits n)