Haskell 将all与多参数函数一起使用
假设我有一个函数a,它接受一个参数,还有一个列表b,其中包含可能的输入,定义如下: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
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