Возможный дубликат:
Почему такое определение функции запрещено в haskell?
Я хотел бы создать функцию flist
, которая принимает функцию f
в качестве аргумента и возвращает другую функцию, аргументом которой будет список, но ведет себя точно так же, как f
.
Например:
let f x1 x2 x3 = x1+ x2 + x3
я хочу такое поведение
(flist f) [x1,x2,x3] = x1+x2+x3
Когда список не имеет длины 3, он может вести себя как угодно. flist
должен заботиться о любой функции (не только о функциях с 3 аргументами, т.е. если g x1 x2 x3 x4 = x1+x2+x3*x4
, то (flist g) [x1,x2,x3,x4] = x1+x2+x3*x4
).
Я пробовал это,
flist f [] = f
flist f (x:xs) = flist (f x) xs
Но это не работает. Как мне этого добиться? Могу ли я использовать типы данных для этого?
f x y z
на сложный синтаксисf [x,y,z]
. - person AndrewC   schedule 06.09.2012