blob: 5d73db5e37a3b27541fd429fc5528ffc6c6fea87 (
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
27
28
29
30
|
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)
|