Copyright | (c) Mario Lang 2019 |
---|---|
License | BSD3 |
Maintainer | mlang@blind.guru |
Stability | experimental |
Safe Haskell | None |
Language | Haskell2010 |
A small collection of data types and functions to represent Chess positions and moves including move generation and parsing from external sources.
This module does deliberately not implement any search or evaluation functionality. It is intended to be used to lay the ground for communicating with other programs or players, hence the package name chessIO.
Synopsis
- data Color
- opponent :: Color -> Color
- data Sq
- isLight :: Sq -> Bool
- isDark :: Sq -> Bool
- data PieceType
- data Position
- startpos :: Position
- color :: Position -> Color
- pieceAt :: Position -> Sq -> Maybe (Color, PieceType)
- fromFEN :: String -> Maybe Position
- toFEN :: Position -> String
- data Move
- fromSAN :: Position -> String -> Either String Move
- fromUCI :: Position -> String -> Maybe Move
- toUCI :: Move -> String
- moves :: Position -> [Move]
- applyMove :: Position -> Move -> Position
- unsafeApplyMove :: Position -> Move -> Position
Chess positions
A1 | |
B1 | |
C1 | |
D1 | |
E1 | |
F1 | |
G1 | |
H1 | |
A2 | |
B2 | |
C2 | |
D2 | |
E2 | |
F2 | |
G2 | |
H2 | |
A3 | |
B3 | |
C3 | |
D3 | |
E3 | |
F3 | |
G3 | |
H3 | |
A4 | |
B4 | |
C4 | |
D4 | |
E4 | |
F4 | |
G4 | |
H4 | |
A5 | |
B5 | |
C5 | |
D5 | |
E5 | |
F5 | |
G5 | |
H5 | |
A6 | |
B6 | |
C6 | |
D6 | |
E6 | |
F6 | |
G6 | |
H6 | |
A7 | |
B7 | |
C7 | |
D7 | |
E7 | |
F7 | |
G7 | |
H7 | |
A8 | |
B8 | |
C8 | |
D8 | |
E8 | |
F8 | |
G8 | |
H8 |
The starting position as given by the FEN string "rnbqkbnrpppppppp8888PPPPPPPP/RNBQKBNR w KQkq - 0 1".
Converting from/to Forsyth-Edwards-Notation
Chess moves
Converting from/to algebraic notation
fromUCI :: Position -> String -> Maybe Move Source #
Parse a move in the format used by the Universal Chess Interface protocol.
toUCI :: Move -> String Source #
Convert a move to the format used by the Universal Chess Interface protocol.