Fruit: A Functional Reactive User Interface Toolkit

What is Fruit?

Fruit is a purely functional user interface toolkit for Haskell based on the Functional Reactive Programming (FRP) model. FRP is an executable model of reactive systems based on functions of continous time.

Fruit was first described in the paper Genuinely Functional User Interfaces by Antony Courtney and Conal Elliott.

Availability

Caveat (PLEASE READ): This is a snapshot of a research prototype, not a production toolkit. There are many places where the implementation is akward, incomplete (or both), and many things we would rewrite if we were developing a toolkit for production use. Our research work involves exploring the how well the FRP model can account for advanced interaction techniques, not the nitty gritty details of building a production GUI library (although we hope to get there eventually).

We are making this snapshot available to enable others to explore the ideas behind fruit. We welcome contributions in any form (questions, comments, new example programs, beer, etc.).

Downloading

We have tested fruit using both hugs and ghc under both Linux and Windows. We have tried to make it easy to configure, compile and install from sources on any platform.

Prerequisites:

Before downloading the source release of fruit, you must have all of the following installed on your system. We recommend installing them in the order given here. (While this may seem complicated, each package is actually quite easy to install under either Linux or Windows.)

Source Packages:

N.B.: The above distributions contain the same files, but use line-termination conventions in text files appropriate to the given platform.

The release includes complete source code, and detailed instructions on how to configure, build and install fruit with either ghc or hugs98 on either Linux or Windows.

Feedback

We are very interested in hearing from users. Please contact us to let us know of your experiences with fruit.


Antony Courtney, Dept. of Computer Science, Yale University.