What's HTk?

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.

Features include

HTk is easy to use; for example, here is the infamous incrementing button example:
import HTk.Toplevel.HTk

main :: IO ()
main =
 do main <- initHTk []
    b <- newButton main [text "*"]
    pack b []
    cl <- clicked b
    let count :: Int-> Event ()
        count n =
          do cl >>> (b # text n)
             count (n+1)
    spawnEvent (count 1)

Download and Documentation

Here, you can

System requirements

You'll need the following software to run HTk:


  1. get the uni sources
    svn co uni
    cd uni
  2. configure and build
    make cabal
  3. possibly port your old sources by applying mk/ReplaceModuleNames

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.

Current Status

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 at


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.