-- | Nodes in game trees -- Copyright 2009 Colin Adams -- -- This file is part of game-tree. -- -- Game-tree is free software: you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation, either version 3 of the License, or -- (at your option) any later version. -- Game-tree is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -- You should have received a copy of the GNU General Public License -- along with game-tree. If not, see . module Data.Tree.Game_tree.Game_tree where -- | Nodes in a game search tree class Game_tree a where -- | Is this a game-terminating node (e.g. checkmate)? -- -- Law: is_terminal n == (children n == []) is_terminal :: a -> Bool -- | Heuristic value of node -- -- Returned value must line in the (inclusive) range (minBound + 4, maxBound - 3) -- Needs to be sensitive to whose turn it is to move. -- I.e. it must return values of the opposite sign if the other player is to move. node_value :: a -> Int -- | Child nodes in the game tree (positions more deeply searched) children :: a -> [a]