The Haskeline library provides a user interface for line input in command-line programs. This library is similar in purpose to readline, but since it is written in Haskell it is (hopefully) more easily used in other Haskell programs.


  • Provides a rich line editing interface.
  • A ~/.haskeline file allows customization of preferences and custom key bindings.
  • Runs on POSIX-compatible systems, using the terminfo library to support non-ANSI terminals.
  • Runs on Windows using MinGW (Cygwin support is TODO).
  • Supports Unicode cross-platform.
  • History recall and incremental search.
  • Custom tab completion functions which may run in an arbitrary monad.

The latest release, as well as the API documentation, may be obtained from Hackage at http://hackage.haskell.org/package/haskeline.

The most recent development source code can be downloaded with: git clone https://github.com/judah/haskeline

Further documentation is also available on this trac wiki.

Haskeline now also has a mailing list.

Bug reporting

Bug reports or feature requests can be submitted by adding a new ticket. You can either register for a new account, or log in with username guest and password haskeline.

Registering (or alternately, adding your email to the Cc: field) is encouraged; it often takes a few messages back and forth to track down any platform-dependent issues.