我对 Haskell 相当陌生,目前正在从事模拟检查器的任务。我在确定有条件地检查表达式和更新元组值的正确方法时遇到了一些困难。我有一个名为 getPos 的函数,它将返回板上特定位置的 Char 以确定其状态。
onemove :: (Int,[Char],[[Char]],(Int,Int)) -> (Int,[Char],[[Char]])
onemove (a,b,c,(d,e))
| e <= 0 =(a-30,b,c)
| e > 50 =(a-30,b,c)
| (((posTo == 'r') || (posTo == 'i')) &&((posFrom == 'w')||(posFrom == 'k'))) == 'true' =(a-20,b,c)
| (((posTo == 'w')||(posTo == 'k')) && ((posFrom == 'r') || (posFrom == 'i')))== 'true' =(a-20,b,c)
| otherwise = (1000,b,c)
where posFrom = getPos (d, c)
posTo = getPos (e,c)
使用函数在 where 子句中定义变量是否正确?我在最后一行收到以下错误:
parse error on input `='