Haskell 将all与多参数函数一起使用

Haskell 将all与多参数函数一起使用,haskell,Haskell,假设我有一个函数a,它接受一个参数,还有一个列表b,其中包含可能的输入,定义如下: let a x1 = x1 == 3 let b = [3, 3] 现在我想测试b中的所有值是否都返回True作为a的参数,这可以通过all函数实现: all a b > True 但是,如果a有两个参数,而b有一个元组列表,其中元组中的每个值对应于每个参数,那么我可以做类似的事情吗 例如: 这将返回: <interactive>:1:4: Couldn't match expect

假设我有一个函数a,它接受一个参数,还有一个列表b,其中包含可能的输入,定义如下:

let a x1 = x1 == 3
let b = [3, 3]
现在我想测试b中的所有值是否都返回True作为a的参数,这可以通过all函数实现:

all a b
> True
但是,如果a有两个参数,而b有一个元组列表,其中元组中的每个值对应于每个参数,那么我可以做类似的事情吗

例如:

这将返回:

<interactive>:1:4:
    Couldn't match expected type `Bool'
           against inferred type `a1 -> Bool'
    In the first argument of `all', namely `a'
    In the expression: all a b
    In the definition of `it': it = all a b
:1:4:
无法匹配预期的类型“Bool”
针对推断类型'a1->Bool'
在'all'的第一个参数中,即'a'
在表达式中:都是a b
在“it”的定义中:it=所有的a和b

有什么办法吗?

要将一个有两个参数的函数变成一个需要一对参数的函数,请使用

uncurry :: (r -> s -> t) -> (r, s) -> t
那么,怎么样

all (uncurry a) b
?

all (uncurry a) b