HTk is an encapsulation of the graphical user interface
toolkit and library Tcl/Tk for the functional
programming language Haskell. It allows the creation
of high-quality graphical user interfaces within Haskell in a
typed, abstract, and portable manner, as HTk is
known to run under most POSIX systems, like Linux, Solaris and Mac OS X.
HTk is easy to use; for example, here is the infamous
incrementing button example:
- abstract event handling,
- support of nearly all of Tk's features:
- the usual GUI elements such as buttons, menus, list
- canvasses to draw on;
- text widgets for hypertext and forms;
- a toolkit of useful interface elements and dialog
- no longer tested support for
the Tk Interace eXtension, with features such as
notebooks and paned windows.
- hierarchical module names and
- a program to convert the imports of old sources to
hierarchical module names.
main :: IO ()
do main <- initHTk 
b <- newButton main [text "*"]
pack b 
cl <- clicked b
let count :: Int-> Event ()
count n =
do cl >>> (b # text n)
spawnEvent (count 1)
Download and Documentation
Here, you can
- read A Short Introduction to HTk
A short, readable introduction for the HTk neophyte.
Read this first!
- get the
. (Binary bundles are no longer supported.)
- browse (old) haddock generated documentation of the
HTk modules. (Use cabal to
generate your own haddock documentation.)
- read "Verkapselung von Tk-Objekten für HTk",
a technical manual describing how HTk encapsulates Tk.
You'll need the following software to run HTk:
- The Glasgow Haskell
Compiler, Version 6.8.1 or later;
(Version 8.1.1 or later), currently tested with
- An operating system on which these two run, such as
Linux, MacOS or Solaris
(Windows 89, 2K and FreeBSD used to work, too)
- get the
svn co https://svn-agbkb.informatik.uni-bremen.de/uni/trunk uni
- configure and build
- possibly port your old sources by applying
Problems and Troubleshooting
If you have trouble with HTk, please do not hesitate to get
in touch with us (see below). We will try to help, but we can only
fix problems that we know about.
Currently, HTk is "orphanware" - while still being used
and e.g. ported to later versions of the GHC if it is not too
much trouble, it is not actively developed, and new releases are
sparse. Its future prospects are uncertain. Use at your own peril.
Contact and Authors
If you have any questions or request, please get in touch with us
The principal designer of HTk was Einar Karlsen, based on
GoferTk. The event handling is due to George Russell. Further porting was
done by Andree Lüdtke, Christian Maeder and Christoph Lüth.