我有n
整数,如130
。我的任务是将整数分成数字[1,3,0]然后为每个数字[1,3,0]将它们转换成清晰的格式["一个",&#34 ;三","零"]。这是我到目前为止所做的:
digitToWord :: Int -> String
digitToWord n =
case n of
1 -> "one"
2 -> "two"
3 -> "three"
4 -> "four"
5 -> "five"
6 -> "six"
7 -> "seven"
8 -> "eight"
9 -> "nine"
0 -> "zero"
上面的代码采用整数并返回其清晰的等效值。
digits :: Int -> [Int]
digits = map digitToInt . show
此代码采用130
之类的数字,然后将每个数字放入列表中,结果为[1, 3, 0]
。
我现在要做的是使用Haskell将[1,3,0]转换为["一个","三个","零"] 。我该怎么做?
答案 0 :(得分:2)
我稍微修改了你的代码,使其在我的机器上编译。您没有发布digitToInt
的定义,因此我直接使用了digitToWord
(可能名称应该更改,因为它现在是一个数字字符。)
digitToWord :: Char -> String
digitToWord n =
case n of
'1' -> "one"
'2' -> "two"
'3' -> "three"
'4' -> "four"
'5' -> "five"
'6' -> "six"
'7' -> "seven"
'8' -> "eight"
'9' -> "nine"
'0' -> "zero"
digits :: Int -> [String]
digits xs = map digitToWord (show xs)
如果您已经有Int
的列表,那么只需使用您的digitToWord
定义即可
map digitToWord (digits 130)