当前代码
我有两个功能
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
结论
实际上我要求的是使用f1
将Int
执行[Int]
应用于f2
f2
这个问题可以解决高阶函数吗?或任何其他方法? ...或者我如何将f1
转换为更高阶函数以取{{1}}?
谢谢!
答案 0 :(得分:8)
如果要将该功能应用于两个列表,则需要一个不同的功能,即zipWith。
f2 a b = zipWith f1 a b