无法将预期类型'([Char],b0)'与实际类型'[[Char]]'匹配

iHo*_*ell -1 haskell types

第一次使用haskell并且我一直遇到这个问题:

Couldn't match expected type `([Char], b0)'
        with actual type `[[Char]]'
In the first argument of `fst', namely `moves'
In the second argument of `rotatedMaze', namely `(fst moves)'
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚发生了什么.我的参数错误在哪里?

manyPlayersManyRotations :: [[Char]] -> [[Char]] -> [[Char]]
manyPlayersManyRotations maze moves = 
    if null moves
        then maze
        else  
            let     
                rmaze = rotatedMaze maze (fst moves)
                drop1 = dropPlayer rmaze '1'
                opor1 = (fst drop1, snd drop1)
                drop2 = dropPlayer (fst opor1) '2'
                opor2 = (fst drop2, snd opor2 || snd drop2)
                drop3 = dropPlayer (fst opor2) '3'
                opor3 = (fst drop3, snd opor2 || snd drop3)
                drop4 = dropPlayer (fst opor3) '4'
                opor4 = (fst drop4, snd opor2 || snd drop4)
            in 
                if (not)(snd opor4)
                    then fst opor4
                    else manyPlayersManyRotations (fst opor4) (tail moves)

rotatedMaze :: [[Char]] -> [Char] -> [[Char]]
rotatedMaze maze move = 
    if move == ['c']
        then rc maze
        else if move == ['c','c']
                then rcc maze
                    else r180 maze
Run Code Online (Sandbox Code Playgroud)

Chr*_*tin 5

fst 想要一个元组,但你给了它一个列表.

类型fst是:

fst :: (a, b) -> a
Run Code Online (Sandbox Code Playgroud)

错误消息的第一行

Couldn't match expected type `([Char], b0)'
Run Code Online (Sandbox Code Playgroud)

说你的电话参数的预期类型fst([Char], b0).该[Char]位是从上下文推断出来的,b0只是意味着它不关心第二种类型是什么(因为fst只丢弃第二个元组元素).

错误消息的第二行

with actual type `[[Char]]'
Run Code Online (Sandbox Code Playgroud)

说你过去了[[Char]],因为......好吧,那就是你所做的.

也许你不是意味着的fst就是head,它给一个列表的第一个元素.