chessIO: Basic chess library

[ bsd3, game, library, program ] [ Propose Tags ]

A simple and fast library for generating legal chess moves. Also includes a module for communication with external processes that speak the UCI (Universal Chess Interface) protocol, a PGN parser/pretty printer, and Polyglot opening book support. On top of that, provides a console frontend program (cboard) that can be used to interactively play against UCI engines.

[Skip to Readme]


Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees


  • No Candidates
Versions [RSS],,,,,,,,,,,,,,,,,,
Change log
Dependencies attoparsec, base (>=4.10 && <5), binary, bytestring, chessIO, containers, deepseq, extra, file-embed, hashable, haskeline, lens, megaparsec (>=9.0), MonadRandom, mono-traversable, mtl, o-clock, optparse-applicative, prettyprinter (>=1.7.0), process, random, stm, template-haskell (>=, text, th-compat (>=0.1.2), th-lift-instances, time, unordered-containers, vector, vector-binary-instances, vector-instances [details]
License BSD-3-Clause
Copyright 2021 Mario Lang
Author Mario Lang
Category Game
Home page
Bug tracker
Source repo head: git clone
Uploaded by mlang at 2023-01-26T16:44:35Z
Distributions NixOS:
Executables polyplay, cboard
Downloads 5370 total (61 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2023-01-26 [all 1 reports]

Readme for chessIO-

[back to package description]

A Haskell chess library and console UCI frontend program

Build status

chessIO is a Haskell library for working with chess positions and moves, and a console frontend program (cboard) to work with UCI compatible chess engines.

The Library

The main module provided by the library is Game.Chess, which defines data types and functions for working with chess positions and moves. It offers a fully compliant move generator and parsing for and printing positions in Forsyth-Edwards Notation and moves in Algebraic Notation.

Module Game.Chess.UCI provides functionality to run an external process which understands the Universal Chess Interface protocol from within Haskell.

Console frontend for the Universal Chess Interface protocl

cboard is a simple console (text-mode) frontend for interacting with chess engines (like stockfish or glaurung) which make use of the UCI protocol.

To launch a chess engine, simply pass its executable name and arguments to cboard. For instance, cboard stockfish.