module WordNumber where import Data.Array (reverse) import Data.Maybe (Maybe(..)) import Data.String (joinWith) import Data.Tuple (Tuple(..)) import Data.Unfoldable (unfoldr) import Prelude digitToWord :: Int -> String digitToWord 0 = "null" 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 -> Array Int digits n = reverse $ unfoldr unfold n where unfold x | x == 0 = Nothing | otherwise = Just (Tuple (mod x 10) (div x 10)) wordNumber :: Int -> String wordNumber n = joinWith "-" $ map digitToWord (digits n)