Applications and libraries/GUI libraries

From HaskellWiki
< Applications and libraries
Revision as of 13:34, 22 March 2006 by BjornBringert (talk | contribs) (Moved GUI stuff from the old libraries page.)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
The copyright status of this work is not known. Please help resolve this on the talk page.

Graphical User Interface Libraries

There is a large number of GUI libraries for Haskell. Unfortunately there is no standard one and all are more or less incomplete. The following list gives an overview. In general, low-level veneers are going well, but they are low level. High-level abstractions are pretty experimental. There is a need for a supported medium-level GUI library.

High-level: FranTk Fudgets Fruit and wxFruit (Haggis)
Medium-level: wxHaskell Gtk2HS HGL (graphics only) Object I/O
Low-level veneers: HOpenGL (graphics only) TclHaskell Win32 X11

wxHaskell is a portable and native GUI library built on top of wxWindows - a comprehensive C++ library that is portable across all major GUI platforms; including GTK, Windows, X11, and MacOS X. wxWindows is a mature library (in development since 1992) that supports a wide range of widgets with the native look-and-feel, and it has a very active community.
Gtk2Hs is a GUI library for Haskell based on Gtk+. Gtk+ is an extensive and mature multi-platform toolkit for creating graphical user interfaces. Gtk2Hs is actively developed, supporting the latest version of the Gtk+ 2.x series. It provides automatic memory management, Unicode support and also bindings for various Gnome modules. It runs on Windows, Linux, MacOS X, FreeBSD and Solaris.
HToolkit is a portable Haskell library for writing graphical user interfaces (GUI's). The library is built upon a low-level interface that will be implemented for each different target platform. The low-level library is called Port and is currently implemented for GTK and Windows. The middle-level library is named GIO (the Graphical IO library) and is built upon the low-level Port library.
Htk is a typed, portable encapsulation of Tcl/Tk into Haskell. Its distinctive features are the use of Haskell types and type classes for structuring the interface, an abstract notion of event for describing user interaction, and portability across Windows, Unix and Linux.
TclHaskell is a library of functions for writing platform independent, graphical user interfaces in Haskell. The library provides a convenient, abstract and high-level way to write window-oriented applications. It also provides a more low level interface to write primitive Tcl code where helpful. For Unix and Windows (and Macintosh?).
Fudgets is primarily a Graphical User Interface Toolkit for the functional programming language Haskell and the X Windows system. Fudgets also makes it easy to create client/server applications that communicate via the Internet. Programming with Fudgets: A short presentation of the Fudget Library and the ideas underlying it. For Unix, not Windows.
Another high-level approach to GUI's in Haskell. It is based on the concepts of Functional Reactive Programming and arrows. There is also another implementation of this approach, called wxFruit. It is implemented on top of wxHaskell.
is a library for building GUIs in Haskell. FranTk uses behaviours and events, concepts from Conal Elliot's Functional Reactive Animation. FranTk provides good support for developing complex dynamic systems, and is built on top of Tcl-Tk. This makes it platform independent. FranTk was developed by Meurig Sage. For Unix and Windows.
Object I/O for Haskell
A port of Clean Object I/O library for Haskell
A Haskell binding to the NCurses library, a library of functions that manage an application's display on character-cell terminals. hscurses also provides some basic widgets implemented on top of the ncurses binding, such as a text input widget and a table widget.
A minimal binding to curses (as well as ncurses). Smaller and less featured than hscurses, it also provides fast packed string support.

Unsupported GUI-libraries

The following libraries seem to be no longer maintained. However, someone might pick up one of them or at least profit from some design ideas.

Gtk+HS a Haskell binding for GTK+
This library provides a transcription of the original GTK+ API into Haskell. GTK+ is a modern, portable GUI library and forms the basis of the Gnome desktop project. The binding, while not complete, covers most of GTK+'s core functionality and is ready for use in applications that require a GUI of medium complexity. Developed under Unix, but should also be usable with the Windows port of GTK+.
A functional wrapper on top of GTK+HS that provides convenience functions for frequently used programming patterns and eliminates the need for explicit mutable variables.
Haggis is a graphical user interface framework for the functional language Haskell, running under the X Window system. It is being developed using the Glasgow Haskell Compiler with its concurrent extensions to achieve more comfortable interaction with the outside world.
is a concurrent, strongly typed and higher order encapsulation of Tk that supports the definition of user dialogues. Einar Karlsson developed it for his UniForm WorkBench.
developed by Enno Scholz unifies pictures and widgets in a constraint-based framework for concurrent functional GUI programming.
A library of Fudget-like combinators based on the Openlook widget library was developed by Alastair Reid and Satnam Singh. The code has suffered tremendous bit-rot (does anyone have a copy of ghc-0.16?) but all the reusable ideas are described in the paper.
Embracing Windows
is a framework for developing graphical user interfaces. It runs under Windows 95 using a modified version of Hugs 1.3.
Lazy functional components for graphical user interfaces, developed by Rob Noble under the supervision of Colin Runciman (LNCS 982, pages 321-340).