【发布时间】:2017-09-02 09:12:47
【问题描述】:
我知道如何使用递归来反转列表,但我正在尝试使用 foldl 来提高效率。我的代码如下:
reverse list = foldl (++) [] (map (\x -> [x]) list)
在 GHCi 中运行它时,它返回与输入相同的列表。出了什么问题?我也尝试通过 foldr 完成它,但它没有显示任何变化。
【问题讨论】:
-
@icc97 虽然在那个问题中给出了正确的
foldl解决方案,但问题本身并不是关于这个的,所以我不会说它是重复的。 -
@leftaroundabout OP 想要使用
foldl将top answer 的列表反转为重复问题给出的列表:reverseList = foldl (\acc x -> x : acc) [] -
正如我所说,解决方案肯定存在。只是,一个 question duplicate 实际上应该问同样的问题,并且那里并没有真正解决为什么
foldl没有flip会以错误的顺序给出结果。