blob: 5b25ee22b6623ab2f356ab77a7eee94e8799d81c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
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)
|