如何在haskell中调用此函数?

如何在haskell中调用此函数?,haskell,Haskell,我有一个这样的类型函数 function :: Eq a => a -> (b -> c -> a) -> b -> [(d,c)] -> Bool 但我不能称之为。有人能给我举个例子吗:例如函数a b c和一个例子吗?这种类型非常通用,很难解释函数的实际功能。但是,由于a、b、c和d几乎没有约束条件,因此让我们举一个例子,说明它们都恰好满足Int: function (3::Int) (+) 5 [(1,2), (3,4)] 第一个参数必须是a类型

我有一个这样的类型函数

function :: Eq a => a -> (b -> c -> a) -> b -> [(d,c)] -> Bool

但我不能称之为。有人能给我举个例子吗:例如函数a b c和一个例子吗?

这种类型非常通用,很难解释函数的实际功能。但是,由于
a
b
c
d
几乎没有约束条件,因此让我们举一个例子,说明它们都恰好满足
Int

function (3::Int) (+) 5 [(1,2), (3,4)]
第一个参数必须是
a
类型,唯一的限制是它必须是
Eq
的实例<代码>3::Int满足该要求

第二个参数只需要是一个返回
Int
的双参数函数
(+)
满足了这个要求,同时也修复了
b~c~Int

第三个参数的类型也必须是
b~Int


对于任何类型
d
,最后一个参数只需要是类型
[(d,Int)
]的列表。我们将只传递一个成对的
Int
s的列表。

看起来您有一个比较复杂的函数,它使用helper函数检查关联列表中的成员身份

您提供的功能:

function :: Eq a => a -> (b -> c -> a) -> b -> [(d,c)] -> Bool
接受三个参数:

  • 用于比较
    a
    的元素
  • 辅助函数
    b->c->a
  • 辅助函数
    b
    的参数
  • 元组列表
    [(d,c)]
然后,您提供的类型的一个可能功能是:

function :: Eq a => a -> (b -> c -> a) -> b -> [(d,c)] -> Bool
function a f b ((_,c):rest) = ((f b c) == a) || (function a f b rest
function a f b rest         = False
它通过忽略元组的第一个元素并将helper函数应用于元组的第二个参数来检查列表中的成员身份

虽然函数可能看起来很复杂,但您可以在一个相当简单的示例上运行它

function True (==) 0 [("a", 0), ("b",1)]

在上面的示例中,我们使用
(==)
helper函数查找
0
,并检查helper函数是否返回
True

如果您可以描述此函数的功能以及其每个参数的含义,可能会有所帮助。。