haskell minimax /嵌套条件和wheres

时间:2014-09-24 12:20:39

标签: haskell nested minimax

对于作业,我需要在提供给该功能的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。

1 个答案:

答案 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))