# Problem with minimax with alpha beta pruning

3 messages
Open this post in threaded view
|

## Problem with minimax with alpha beta pruning

 Hi All, I am new to Haskell and got stuck while experimenting with minimax algorithm (tic-tac-toe game). Just for learning I am trying to avoid external modules and use only the standard Prelude library. Here is the code snippet: type Pos = (Int,Int)-- Players are O (minimizing) and X (maximizing), B is for the draw (blank), I and J are used for -INF and +INF respectivelydata Player = I | O | B | X | J    deriving (Eq, Ord, Show)type Grid = [(Pos,Player)]data Tree a = Node a [Tree a]    deriving Showminimax :: Player -> Player -> Tree Grid -> Tree (Grid, Player)minimax _ _ (Node g []) | wins X g = Node (g,X) [] | wins O g = Node (g,O) [] | otherwise = Node (g,B) []minimax a b (Node g ts) | turn g == X =   let ts' = [minimax alpha b t | t <- ts, alpha < b]       ps = [p | Node (_,p) _ <- ts']       alpha = maximum (a:ps)   in Node (g, alpha) ts' | turn g == O =   let ts' = [minimax a beta t | t <- ts, a < beta]       ps = [p | Node (_,p) _ <- ts']       beta = minimum (b:ps)   in Node (g, beta) ts'The function call is like: minimax I J treeIt looks like I got a recursion loop. Could someone advise how to approach the problem? Thank you, Max _______________________________________________ Beginners mailing list [hidden email] http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners