【发布时间】:2020-07-11 14:45:21
【问题描述】:
我正在尝试在 Haskell 中编写一个函数,该函数将获取整数列表,例如 [1,2,3,4,5] 并使用递归将它们转换为数字,例如 12345。我正在使用 Haskell 标准库中的长度函数来计算数字的位置,以便它们可以加在一起(10000+2000+300+40+5)。但是,当我使用 length 来计算列表的长度时,无论如何它总是 1,我不知道为什么。这是我的代码:
dig :: [Integer] -> Integer
dig [] = 0
dig (x:xs) = x * (10^(fromIntegral(length[xs]))) + fromDigits(xs)
运行此代码将始终将数字乘以 10,长度始终为 1,因此 dig [1,2,3,4] 给出 100 而不是 1234。
【问题讨论】:
-
我将此问题链接到一个较旧的问题,该问题解决了这里的主要问题,只是为了交叉引用。
标签: list haskell recursion integer