Final Report to NUTEK on the project "Graphical User Interfaces in Lazy Functional Languages"

9 May 1996, updated 18 Sep 1996.

(This is an English translation of the original Swedish version.)

The project has resulted in the software product Fudgets (Functional Widgets), a software library for the construction of graphical user interfaces on a high level in the functional language Haskell. As a spin-off effect, Fudgets also support the development of client/server based software than can communicate via the Internet.

In what way have the project results been spread to the research community and others?

The research community:
  • Information on Fudgets has primarily been spread via the World Wide Web, by the creation and advertising of a home page. From this page you can, amongst other things, try out a number of demonstration programs. One coarse measure of the amount of attention Fudgets have received can be obtained by studying the number of references there are to Fudgets from WWW pages outside Chalmers. You can the find over 40 references (9 May 1996). An entry for the Fudgets concept has been added to The Free On-line Dictionary of Computing.
  • Fudgets was one of the subjects covered in the First International Spring School on Advanced Functional Programming. The goal of this spring school was to teach the latest techniques in functional programming. It received good testimonials from the participants.
  • Thomas Hallgren and Magnus Carlsson were invited to the workshop Graphical User Interface Toolkits and Functional Programming in Glasgow (July 1995). For one week, Fudgets and other similar systems, were studied closely by scientists and specialists from ten different universities and one company.
  • At the 7th Nordic Workshop in Programming Theory (November 1995) the underlying theory, with so called stream processors, was presented. An article on stream processors was included in the proceedings.

Industry:
Fudgets will be (were) presented at a seminar day for the industry on 4th June 1996.

Education:
Fudgets have been used as part of the regular teaching in courses on programming at Chalmers, Linköpings universitet, Katholieke Universiteit Leuven (Belgium) and National University of Singapore (and perhaps other places that we don't know of). Individual students have used Fudgets in projects at several universities, see e.g., Habitat in Nottingham.

Have the project goals been reached?

The primary goal was the following:
Still, to make it really useful to the community and for our own related projects, resources must be spent in developing a complete set of interface elements, and documenting the system with a tutorial, user's manual and a hypertext reference manual. Thus, we plan to dedicate a full time programmer during three years on developing the toolkit in this direction. We do not want to spend too much PhD-student time into this, since the work does not necessarily lead to a thesis.
We received only 50 percent of the funding we applied for. Even so, the fudget library has been developed further with a number of new user interface elements, a hyper-text manual and a number of example applications. In addition, the programming method has proved to be useful for a more general class of problems where parallelism is present. The Fudget Library thus supports the development of client/server based software. This has been used in the implementation of a tool for group activity planning, that has simplified the planning of meetings at our department on several occasions.

Specify to what degree the project has included collaboration with other research groups

Specify to what degree the project has included international collaboration

During the project we have visited researchers that use Fudgets at National University of Singapore and been in contact with students at Katholieke Universiteit Leuven who used Fudgets in a programming project and in addition translated parts of the fudgets manual to dutch (to be used in teaching).

Specify to what degree the project has included collaboration with companies

In collaboration with Carlstedt Research & Technology AB Fudgets have been used for rapid prototyping of the mobitex system (mobile textual communication) for Eritel AB.

Summary in English

The Fudgets Library is primarily a toolkit for the construction of Graphical User Interfaces (GUIs) on a high level of abstraction in the lazy functional language Haskell, but it also allows you to construct programs that communicate across the Internet with other programs.

The design of the Fudget Library started with the desire to find a good abstraction of GUI building blocks, i.e., an abstraction that makes use of the powerful abstraction mechanisms found in functional languages (higher order functions, polymorphism, etc.) and thereby, hopefully, is better than the abstractions you find in typical GUI toolkits for conventional, imperative languages.

The main abstraction used in the Fudget Library is the fudget. Fudgets are processes which can, via type safe message passing, communicate with other concurrently running fudgets and with the outside world. Fudgets are still ordinary values that can be passed as arguments to functions, etc. A fudget may have an internal state, which is not visible in the type of the fudget. Fudget programming in this respect resembles object oriented programming, where state information is distributed and hidden within objects rather than centralized and exposed to arbitrary use or misuse. This also makes fudgets easy to compose, like functions in functional languages.

Comment on how the research project has developed with respect to original approach, goals and expected results

What originally started as an experiment to find out whether functional languages would be at all suitable for programming graphical user interfaces has developed into a product that has been called the standard toolkit by other researchers in the area. The documentation of the project is still incomplete, due to insufficient funding.

[an error occurred while processing this directive]