Go to the first, previous, next, last section, table of contents.
Haggis is a framework for creating graphical user interfaces using
Haskell, a lazy functional programming language (See section Related resources.) It provides the basic functionality required to
express and execute a user interface in a functional language.
Haggis has two overriding goals, one is to provide a good, useable
framework for writing programs with graphical user interfaces, and
secondly to act as a research system for me (sof@dcs.gla.ac.uk) to
investigate issues of how graphics and interaction can be expressed
and structured using a functional language.
But why do we need Yet Another Windowing Toolkit/Framework, I hear
you ask. Good question :-), the reasons are many:
-
Through the introduction of monadic I/O, Haskell programmers can
interact comfortably with the outside world. However, no proper support
exist for writing graphical user interfaces using this I/O model (the
impressive Fudgets system uses the (older) I/O Dialogues (See section Related resources for more info.)
-
Current mainstream user interface technology impose severe restrictions
on programming style and structuring, where whole applications are
structured around the delivery of events from the user. Having a binding
to such toolkits in Haskell would result in functional programs with the
same style and structuring problems. So, instead of importing this user
interface technology wholesale into a functional language, would a more
fundamental approach where a functional programming language is used
from the bottom up lead to a `better' approach to user interface
construction? Haggis is partly an attempt to explore this issue of
expressiveness of functional programming applied to graphical user
interfaces.
-
The egalitarian view of values in functional programming does not fit
well with the rather special status that standard toolkits provide of
user interface objects. For example, combining two such objects to make
up a new one with equal status is not well supported, this contrasts
with the inherent compositional mechanisms that FP provides. Will a
structured, first-class approach lead to a more extensible user
interface framework where the building of an application is not
separated from the construction of a new user interface abstraction.
-
A user interface reacts and responds to interaction from the outside. It
is often stated that simultaneously dealing with the interaction from
multiple sources in a UI is best done using concurrency. One aim of
examine the expressiveness that result.
Haggis is to try to combine concurrency and a functional language, and
Go to the first, previous, next, last section, table of contents.