Haskell高阶函数问题

时间:2011-06-10 07:53:03

标签: haskell higher-order-functions

当前代码

我有两个功能

f1::Int->Int->Int
f1 a b | a==1 &&  b==1 = 1
       | otherwise = 0

通过另一个函数将此函数应用于[Int]

f2::[Int]->[Int]->[Int]
f2 a b = map f1 a b

错误

Type error in application
*** Expression     : map f1 c d
*** Term           : map
*** Type           : (e -> f) -> [e] -> [f]
*** Does not match : a -> b -> c -> d

结论

实际上我要求的是使用f1Int执行[Int]应用于f2 f2 这个问题可以解决高阶函数吗?或任何其他方法? ...或者我如何将f1转换为更高阶函数以取{{1}}?

谢谢!

1 个答案:

答案 0 :(得分:8)

如果要将该功能应用于两个列表,则需要一个不同的功能,即zipWith。

f2 a b = zipWith f1 a b