对于作业,我需要在提供给该功能的Gametree上编写一个Minimax函数(作为一块木板; Rose Board)和一个转向它的玩家。但是我收到关于输入'|'的解析错误的错误。可能是因为我嵌套条件和语句,但我不确定我是否正确地做了这个或者是否可能(或者应该以不同的方式完成):
minimax :: Player -> Rose Board -> Rose Int --Rose Int = Int :> [Rose Ints]
minimax p rb = minimax' rb p
where minimax' (b :> [rbs]) p0 | null rbs = result
where result | p0 == p = 1
| otherwise = -1
| otherwise = 0 :> (minimax' rbs (nextPlayer p0))
如果有人能帮助我,我们非常感激!
祝你好运, Skyfe。
答案 0 :(得分:1)
解决此问题的最简单方法可能是使用let
代替where
:
minimax :: Player -> Rose Board -> Rose Int --Rose Int = Int :> [Rose Ints]
minimax p rb = minimax' rb p
where minimax' (b :> [rbs]) p0 | null rbs = let result | p0 == p = 1
| otherwise = -1
in result
| otherwise = 0 :> (minimax' rbs (nextPlayer p0))
但您也可以使用条件表达式:
minimax :: Player -> Rose Board -> Rose Int --Rose Int = Int :> [Rose Ints]
minimax p rb = minimax' rb p
where minimax' (b :> [rbs]) p0 | null rbs = if p0 == p then 1 else -1
| otherwise = 0 :> (minimax' rbs (nextPlayer p0))