Learning Haskell with Chess

From HaskellWiki
Revision as of 13:35, 18 March 2007 by Smazanek (talk | contribs)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Exercise 1 - Data Types

Learning Targets

  • recapitulate Haskell types (keywords type and data, product and sum types)
  • Helium: define equality functions (pattern matching)
  • pretty printing

Tasks

  • Define data types that represent boards, squares, positions, pieces and game states.
  • Helium: Implement suited eq-functions.
  • Implement a function prettyBoard, that transforms a board into a clearly arranged string representation (human readable :-)). Support this function with auxiliary functions that pretty print pieces, squares, ...
  • Define an initialBoard, test prettyBoard with initialBoard.
  • Implement a simple evaluation function evalBoard::Board->Int as the difference of material on board (values: Pawn->1, Knight and Bishop->3, Queen->9, Rook->6, King->"infinity")

Exercise 2 - Move Generator


Exercise 3 - Gametree Generation and Minimax Algorithm

Tasks

  • Define a data type that represents a game tree
  • Roughly estimate the number of nodes of the gametree with depth 4
  • Define a function play::Gametree->Int
  • pretty printing