我正在尝试学习如何将一个包含多个数字的整数分成一个[Integer]
,并且我之前看过一篇关于此的文章,他们只是使用模 10 运算符一遍又一遍地查找最后一个/余数并将该数字分配给an 的开头[Int]
,但为什么不能简单地使用 show 函数将数字转换为 a String
(我相信等于 a [Char]
),然后将 read 函数映射到Char
in 中的每个位置以获取[Char]
每个点的整数值[Char]
一个[Integer]
?
我想象的代码几乎就像这样:
deconstructor :: Integer -> [Integer] //(or trying [Char])
deconstructor n
| n < 0 = map read (show (n * (-1)))
| n == 0 = [read "0"] //(This line works)
| otherwise = map read (show n) //(or in [] or with :: [Integer] on the end)
它给出的错误总是类似于:
* Couldn't match type `Char' with `[Char]'
Expected: [String]
Actual: String
只是处理show n
编译良好并给出String
/ [Char]
,我理解映射的方式是它只是对右侧数组的每个索引执行左侧的操作(在本例中读取)(我想象的是 a [Char]
),所以我不太明白是什么?是否必须String
已经分成不同的[String]
s 或者其他什么?