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)