Задача функции высшего порядка на Хаскеле - PullRequest
1 голос
/ 10 июня 2011

Текущий код

У меня есть две функции как

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

Error

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

Conclution

На самом деле я запросил f1, который выполняет Int для [Int], используя f2 эта проблема может быть решена в функциях высшего порядка ? или любой другой метод? ... или как я могу преобразовать f2 в функцию более высокого порядка, чтобы взять f1?

Спасибо!

1 Ответ

8 голосов
/ 10 июня 2011

Если вы хотите применить функцию к двум спискам, вам нужна другая функция, а именно zipWith.

f2 a b = zipWith f1 a b
...