2011-06-10 72 views
1

目前代碼Haskell的高階函數問題

我有兩個功能

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 

結論

其實我的科目編號是申請使用f2 被這個問題可以在高階函數解決了執行的Int[Int]f1?或任何其他方法? ...或者我如何將f2轉換成更高階的函數來取f1

謝謝!

回答

8

如果您想將函數應用於兩個列表,您需要一個不同的函數,即zipWith。

f2 a b = zipWith f1 a b