reverse'::[a] -> [a]
reverse' xs=foldl (\acc x -> x:acc) [] xs
example:
reverse' [1,2,3,4,5]
output:[5,4,3,2,1]
如果我更改了acc
[]
reverse' xs=foldl (\acc x -> x:[]) [] xs
输出
[5]
为什么?
答案 0 :(得分:5)
Haskell中的Foldl与for循环的工作方式类似:
acc = []
for each x in xs:
acc = (x:[])
return acc
由于您用于更新acc
的步骤不依赖于先前的值,因此最终结果将仅依赖于列表的最后一个元素(或将是{{1的初始值)如果列表为空,则为。)