使用foldr1实现最后

时间:2014-06-20 19:56:43

标签: haskell fold

我使用foldr1实现最后一个函数时遇到问题。我假设它采用最正确的元素并将其视为累加器值,然后将二进制函数应用于累加器及其邻居,直到它到达给定列表的开头。但是,下面显示的代码不起作用。有人能告诉我它有什么问题吗?它没有返回最后一个元素,而是打印出第一个元素

last' list = foldr1 (\acc _ -> acc) list

1 个答案:

答案 0 :(得分:1)

foldr :: (a -> b -> b) -> b -> [a] -> b

如您所见,foldr使累加器成为第二个参数,而列表中的值是第一个。 foldr1的行为方式相同。所以,正如Lee所说,你需要让你的lamdba返回第二个参数而不是第一个参数。或者,您可以说foldr1 (flip const)