名单是
[2, 3, 4]
Run Code Online (Sandbox Code Playgroud)
我希望对每个结果进行取幂.那么,它将是:
(2 ^ 3)^ 4 = 4096
我的解决方案是
代码是
foldl (^) 2 [1, 3, 4]
Run Code Online (Sandbox Code Playgroud)
跟踪是
((2 ^ 1)^ 3)^ 4 = 4096
有没有改变清单的解决方案?
是的,如果保证列表具有第一个元素,我们可以使用foldl1 :: (a -> a -> a) -> [a] -> a它使用列表的第一个元素作为初始累加器.所以我们可以使用:
foldl1 (^) [2, 3, 4]Run Code Online (Sandbox Code Playgroud)
这当然会产生相同的结果:
Prelude> foldl1 (^) [2,3,4]
4096
Run Code Online (Sandbox Code Playgroud)
请注意,如果您使用空列表,则上述函数将出错.所以你需要通过一些额外的逻辑来处理这种情况 - 如果可能的话.
| 归档时间: |
|
| 查看次数: |
93 次 |
| 最近记录: |