HChess is an attempt to learn haskell by means of writing a chess engine, something I’ve previouisly done in C++.
This software is in it’s very early stages and only currently supports pretty printing of an initial board state.
Current features:
- Data types for Ranks and Files.
- 0x88 Board representaiton using Array indexed by Locus.
- Translation functions for translating between 0x88 locaii and File, Ranks.
- Direction types and applications to Locus to generate a new Locus.
- Piece data types:
- Piece Kind
- Colour
- Piece
- Creation of starting board.
- Pretty printing of game state.
- GameState class that encapsulates all game state.
- Move generation that’s valid up to perft 5 from starting position and various other positions.
- Perft testsuite with Travis CI integration.
- Game tree search with:
- UCI implemtnation, allowing communication with various chess programs, such as Cute Chess.
- Iterative deepening
- Use Template Haskell to precompute movement rays during MoveGen.