将整数转换为单词列表

时间:2016-05-21 09:24:10

标签: haskell

我有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]转换为["一个","三个","零"] 。我该怎么做?

1 个答案:

答案 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)