使用foldr的Haskell错误

ede*_*iss 1 haskell

我是哈斯克尔的新手,并尝试了一些练习

我不明白产生的错误是什么以及它产生的原因

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)

谁有人可以帮忙?提前致谢

Sat*_*vik 6

折叠器的类型是

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必须是相同的类型,这是不可能的任何的xy作为y:x将始终是一个步骤更深列表中的比y.

我想你想做什么x:y