Pau*_*aul 8 haskell integer list
几乎就是标题所说的.我有一个整数列表,如下所示:[1,2,3].我想把它改成整数123.我的第一个想法是concat但是这不起作用,因为它是错误的类型,我尝试了各种各样的东西,但通常我最终返回相同的列表.任何帮助非常感谢.
此外,我已经找到了一种方法来打印正确的事(putStr)除了我想要的类型是整数和putStr没有做到这一点.
sth*_*sth 23
您可以使用foldl
组合列表的所有元素:
fromDigits = foldl addDigit 0
where addDigit num d = 10*num + d
Run Code Online (Sandbox Code Playgroud)
该addDigit
函数被调用foldl
以从最左边开始一个接一个地添加数字.
*Main> fromDigits [1,2,3]
123
Run Code Online (Sandbox Code Playgroud)
编辑:
foldl
从左到右遍历列表,添加元素以累积某些值.
的第二个参数foldl
,0
在这种情况下,是该过程的起始值.在第一步1
中,通过调用将该起始值与列表的第一个元素组合在一起addDigit 0 1
.这导致10*0 + 1 = 1.在下一步中,将1与列表的第二个元素组合addDigit 1 2
,得到10*1 + 2 = 12.然后将其与列表的第三个元素组合,通过addDigit 12 3
,导致10*12 + 3 = 123.
因此,毫无意义地乘以零只是第一步,在接下来的步骤中,实际上需要乘法以将新数字添加到累积数字的"结尾".
Ash*_*hra 11
您可以concat
使用数字的字符串表示形式,然后将read
它们返回,如下所示:
joiner :: [Integer] -> Integer
joiner = read . concatMap show
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
12778 次 |
最近记录: |