可能重复:
为什么在haskell中不允许这样的函数定义?
再会!
我正在尝试编写/查找将任意有限大小列表转换为函数参数的函数 g,例如
g k [a,b,c,d] = k a b c d
g f [a,b,c] = f a b c = ((((f) $ a) $ b) $ c)
语法上看起来像g = foldl ($) f
,但编译器合理地未能应用该函数,回答:
ghci> let (><) f = foldl ($) f
<interactive>:1:19:
Occurs check: cannot construct the infinite type: b = b1 -> b
Probable cause: `$' is applied to too many arguments
In the first argument of `foldl', namely `($)'
In the expression: foldl ($) f
所以我无法产生一些有效的实现。你有什么想法?先感谢您!