【发布时间】:2020-11-22 10:17:12
【问题描述】:
如何使用foldr 在haskell 中重新定义all 函数?
我试过这样写,但我不确定为什么它不起作用。
all :: (a -> Bool) -> [a] -> Bool
all p (x:xs) = foldr (&&) True ((p x) : (all p xs))
【问题讨论】:
-
我认为,问题在于您混合了
foldr和递归。写all p x = foldr (&&) True $ map p x就够了。 -
你不应该调用
all p xs,foldr本身就是在列表上定义递归的一种方式。
标签: haskell higher-order-functions fold