Haskell 将整数转换为单词列表

Haskell 将整数转换为单词列表,haskell,Haskell,我有一个整数n,比如130。我的任务是将整数分隔为数字[1,3,0],然后将每个数字[1,3,0]转换为清晰的格式[“一”、“三”、“零”]。以下是我迄今为止所做的工作: digitToWord :: Int -> String digitToWord n = case n of 1 -> "one" 2 -> "two" 3 -> "three" 4 -> "four" 5 -> "five" 6 ->

我有一个整数
n
,比如
130
。我的任务是将整数分隔为数字[1,3,0],然后将每个数字[1,3,0]转换为清晰的格式[“一”、“三”、“零”]。以下是我迄今为止所做的工作:

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]转换为[“一”、“三”、“零”]。我如何做到这一点?

我对您的代码进行了一些修改,使其能够在我的机器上编译。您没有发布
DigitPoint
的定义,因此我直接使用了
digitToWord
(可能名称应该更改,因为它现在是一个数字字符)

如果您已经有一个
Int
s列表,那么只需在中使用您对
digitToWord
的定义即可
map digitToWord(数字130)

我对您的代码进行了一些修改,使其能够在我的机器上编译。您没有发布
DigitPoint
的定义,因此我直接使用了
digitToWord
(可能名称应该更改,因为它现在是一个数字字符)

如果您已经有一个
Int
s列表,那么只需在中使用您对
digitToWord
的定义即可
map digitToWord(数字130)

digitToInt
来自Data.Char模块。
digitToInt
来自Data.Char模块。
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)