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
27
28
|
module WordNumber where
import Data.List (intersperse)
digitToWord :: Int -> String
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 0 = "naught"
digitToWord _ = "What?"
digits :: Int -> [Int]
digits n = go n []
where
go 0 acc = acc
go x acc = go (div x 10) (mod x 10 : acc)
wordNumber :: Int -> String
wordNumber n = concat ( intersperse "-" (map digitToWord s) )
where s = digits n
|