Haskell 列表中的文件夹

Haskell foldr on list

我在 Haskell 中有一个 BST 的成员函数。我正在尝试使用 foldr 检查列表中的每个元素是否都在 BST 中。我的成员函数适用于单个元素,第一行看起来像这样。

member ::(Ord a) =>  BST a -> a -> Bool

当我有:

let val = foldr mBST my_list 

我收到以下错误:

Couldn't match expected type `a0 -> b0 -> b0'
            with actual type `BST Int'
In the first argument of `foldr', namely `mBST'
In the expression: foldr mBST my_list

我知道 foldr 的类型是 foldr :: (a -> b -> b) -> b -> [a] -> b,所以我的类型不匹配,但我不知道如何修复它或者在这种情况下甚至可以使用 foldr 。但我需要检查列表中的每个元素是否都在我的 BST 中。

foldr 收到 3 个参数。二元函数(运算符)、累加器(运算符的中性操作数)和结构(列表)。

你调用的函数可以是:

foldr (&&) true $ map (member mBST) myList

:t member mBST
 member mBST :: (Ord a) => a -> Bool

map 函数对数组元素应用一元运算符(或接收一个参数的函数)。在你将 membermBST 应用到你的结构(列表)上的每个成员之后,然后使用 foldr.

检查是否所有成员都是 true