如何在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
如果您可以描述此函数的功能以及其每个参数的含义,可能会有所帮助。。