Haskell ,用foldr实现任意功能

Haskell ,implement any function with foldr

我正在尝试实现一个函数,当列表中至少有一个元素满足条件 (>5)

时,该函数给出 True
*Main> any (>5) [1..]
True

这是我正在运行的代码:

any1 f [] = True
any1 f (x:xs) = f x || any f xs

但是我想用foldr实现,怎么办? 感谢您的帮助。

列表中的 foldr 模式基本上取代了:

foldr f z [x<sub>1</sub>, x<sub>2</sub>, …, x<sub>n</sub>]

与:

f x<sub>1</sub> (f x<sub>2</sub> (… (f x<sub>n</sub> z) …))

因此,它用 f 替换了“cons”构造函数 (:),用 z 替换了空列表 []

因此,您应该查看 any1 f 如何具有它映射到空列表的值,并定义一个函数 g 将元素 x[ 作为第一个参数=32=]i</sub> 和第二个元素 foldr g [x<sub>i+1</sub>, x<sub>i+2</sub>, …, x<sub>n</sub>]:

any1 :: Foldable f => (a -> Bool) -> f a -> Bool
any1 f = foldr g …
    where g … = …

需要填写的地方.