haskell代码中的解析错误,can';我不明白为什么

haskell代码中的解析错误,can';我不明白为什么,haskell,Haskell,更新:删除了与错误无关的代码,因为这是作业,其他学生可能会看到 我正在做一个家庭作业,用haskell玩连接四。提供了游戏板,以及包含移动的列表。我是haskell的新手,不明白为什么第20行出现解析错误。我在完成检查connectfour的代码时也遇到了一些问题,因此对于这两个问题中的任何一个,我都将不胜感激 我得到的错误是: :20:40: error : parse error on input ‘=’ Perhaps you need a 'let' in a 'do'

更新:删除了与错误无关的代码,因为这是作业,其他学生可能会看到

我正在做一个家庭作业,用haskell玩连接四。提供了游戏板,以及包含移动的列表。我是haskell的新手,不明白为什么第20行出现解析错误。我在完成检查connectfour的代码时也遇到了一些问题,因此对于这两个问题中的任何一个,我都将不胜感激

我得到的错误是:

:20:40: error :
    parse error on input ‘=’
    Perhaps you need a 'let' in a 'do' block?
    e.g. 'let x = 5' instead of 'x = 5'
在以下代码中,导致错误的行用注释标记:

onePlayerManyMoves :: [[Char]] -> [Int] -> [[Char]]
onePlayerManyMoves :: [[Char]] -> [Int] -> [[Char]]
onePlayerManyMoves [] _ = []
onePlayerManyMoves game [] = game  -- **parse error here**
if connectFour
  onePlayerManyMoves game (move:moves) = game
else
  onePlayerManyMoves game (move:moves) = play game '1' move, onePlayerManyMoves game (move:moves) = game moves
where connectFour = checkFour game


忽略源代码中的伪“`”。让我们看一下这些行:

if connectFour
  onePlayerManyMoves game (move:moves) = game
else
  onePlayerManyMoves game (move:moves) = play game '1' move, onePlayerManyMoves game (move:moves) = game moves
这不是Haskell中条件的工作方式。首先,它是一个表达式。不是陈述,不是声明,不是其他任何东西。表情。(还有
然后
关键字,这不是可选的)。不能有这样的条件模式绑定。您需要一个条件表达式:

onePlayerManyMoves game (move:moves) = if connectFour then ... else ...
接下来,让我们看看
else
分支中的内容

play game '1' move, onePlayerManyMoves game (move:moves) = game moves
我不知道这可能意味着什么。Haskell中没有逗号运算符。现在还不清楚你想在这里做什么


下面还有许多其他错误,但这应该可以让您开始了。

您可以发布您得到的实际错误吗?:20:40:错误:解析输入上的错误“=”也许您需要在“do”块中添加一个“let”?Eg让x=5’而不是‘x=’5,在代码的中间是否有真正的反向记号?请修正你的格式。我不知道什么是真正的代码,什么只是StackOverflow上的格式错误。大家好,欢迎来到StackOverflow。我看到你编辑了你的问题,删除了所有的文本。我理解你为什么这么做(为了避免给其他学生答案),但是这种编辑留下了一个无用的问题,对其他人没有好处。我已回滚您的更改,但已将代码编辑到所需的最低限度。如果您仍然对代码编写感到不舒服,您可以完全删除您的问题,但请先查看。谢谢!这是我第一次在这里发表文章,所以我不确定我应该如何编辑它(在整个代码中都提到了“`````。我只是在学习如何在这里发表!)我感谢您的反馈!这也是我第一次使用任何函数式语言,所以我一直在努力学习语法。我会做出这些改变,看看我能得到什么!为了清楚起见,这里有一个逗号运算符(元组构造函数)@n.m。不过这有点不寻常,因为您也需要使用括号it@ATaylertbf、列表、元组、列表理解等都有逗号,但没有独立的运算符。@n.m.你说得对,检查了语言报告,元组构造函数在技术上不是运算符,当我更仔细地思考时,这是有道理的:)