The work presented in this thesis started with the desire to
write programs with graphical user interfaces in a purely
functional language. We also wanted to implement the GUI toolkit
itself in the functional language. The questions we asked
ourselves were:- Would the features of functional languages be appropriate for
this task? Functional languages were known to be weak when it
came to I/O. Implementations of GUI toolkits had traditionally
been done in an object-oriented style. Lacking features such as
subtypes, inheritance and parallelism, would a functional
language still suffice?
- Would implementations of functional languages be efficient
enough to cope with the potentially large volume of I/O and
high requirements on response times?
We believe that the thesis shows that the answer is yes to both
of these questions.
The main result of the work behind this thesis is the Fudget library, which is an implementation of the ideas outlined in
the previous section. Among other things, it provides
- types and combinators for fudgets and stream processors,
- a GUI toolkit, providing the usual widgets, and
- support for network communication.
The Fudget library shows how a concurrent programming paradigm can
be implemented and applied in a purely functional programming
language.
We demonstrate the practical usefulness of the Fudget library
by presenting a number of application programs, some of which are
quite large. A number of programming styles and methods are
presented which can be used when programming with Fudgets.