可能重复:
为什么在haskell中不允许这样的函数定义?
我想创建一个函数flist
,它将一个函数f
作为参数并返回另一个函数,其参数将是一个列表,但行为与f
.
例如:
let f x1 x2 x3 = x1+ x2 + x3
我想要这种行为
(flist f) [x1,x2,x3] = x1+x2+x3
当列表的长度不是 3 时,它可能会以任何方式运行。flist
应该处理任何函数(不仅是具有 3 个参数的函数,即 if g x1 x2 x3 x4 = x1+x2+x3*x4
, then (flist g) [x1,x2,x3,x4] = x1+x2+x3*x4
)。
我试过这个,
flist f [] = f
flist f (x:xs) = flist (f x) xs
但它不起作用。我如何实现这一目标?我可以使用数据类型来做到这一点吗?