我是哈斯克尔的新手,并尝试了一些练习
我不明白产生的错误是什么以及它产生的原因
split = foldr
(\x y -> y:x)
[[]]
Run Code Online (Sandbox Code Playgroud)
解释器的错误如下
Occurs check: cannot construct the infinite type: a0 = [a0]
In the first argument of `(:)', namely `y'
In the expression: y : x
In the first argument of `foldr', namely `(\ x y -> y : x)'
Failed, modules loaded: none.
Run Code Online (Sandbox Code Playgroud)
谁有人可以帮忙?提前致谢
折叠器的类型是
foldr :: (a -> b -> b) -> b -> [a] -> b
Run Code Online (Sandbox Code Playgroud)
分裂
split = foldr (\x y -> y:x) [[]]
Run Code Online (Sandbox Code Playgroud)
y并且y:x必须是相同的类型,这是不可能的任何的x和y作为y:x将始终是一个步骤更深列表中的比y.
我想你想做什么x:y?