我正在尝试使某些东西正常运行,这是一款游戏。我遇到了无法跟踪的解析错误。
getLineDir :: (Int, Int) -> Piece -> Board -> [Piece]
getLineDir (x,y) (Piece (x',y') player) board
| pieceAt(x'+ x, y'+ y) board == Nothing = []
| if pieceAt(x'+ x, y'+ y) board == Just (Piece _ player') && isPlayer player (Piece _ player') == True then (Piece (x',y') player):[] else (Piece _ player'): getLineDir (x,y) (Piece (x'+x, y'+y) player) board
flippable :: [Piece] -> [Piece]
我收到的错误消息是:
解析错误(可能是缩进不正确或括号不匹配)
我在以“ flippable”开头的行上遇到了解析错误,因此我猜测上一行存在问题。
您不能使用==
像这样的模式Just (Piece _ player')
。与一样,您需要正确的模式匹配case
。
getLineDir :: (Int, Int) -> Piece -> Board -> [Piece]
getLineDir (x,y) (Piece (x',y') player) board =
case pieceAt (x'+ x, y'+ y) board of
Nothing -> []
Just piece@(Piece _ player')
| isPlayer player piece -> [Piece (x',y') player]
| otherwise -> piece : getLineDir (x,y) (Piece (x'+x, y'+y) player) board
可能Just piece@(Piece _ player')
只需替换为即可Just piece
,因为您以后再也不需要player'
了。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句