[Haskell-cafe] ANNOUNCE: first Grapefruit release
g9ks157k at acme.softbase.org
Sat Feb 14 11:19:09 EST 2009
Dear friends of Haskell and Functional Reactive Programming,
its my pleasure to announce the first official release of Grapefruit, a
library for Functional Reactive Programming (FRP) with a focus on user
With Grapefruit, you can implement reactive and interactive systems in a
declarative style. User interfaces are described as networks of communicating
widgets and windows. Communication is done via different kinds of signals
which describe temporal behavior.
Grapefruit consists of five packages with several interesting features:
grapefruit-frp: Functional Reactive Programming core
* The FRP implementation uses a hybrid push/pull-based approach.
* Signals can be memoized by binding them to variables – like ordinary
* Merging of event streams combines simultaneous events properly.
* Signals cannot behave differently by starting them at different times.
The type system is used to enforce proper aging of signals.
grapefruit-records: A record system for Functional Reactive Programming
* Input records can specify fields as being required or optional.
* Uninteresting output fields can be ignored. The set of interesting
fields is specified by pattern matching.
grapefruit-ui: Declarative user interface programming
* The interface for UI programming is platform-independent and can be
implemented on top of different UI toolkits.
* A concrete implementation can be selected at compile time or runtime.
grapefruit-ui-gtk: GTK+-based implementation of the general UI interface
* Gtk2Hs is used internally.
grapefruit-examples: examples demonstrating features of Grapefruit
* Circular communication and switching are demonstrated.
Support for the following is planned for the future:
* signals with incremental updates
* user interfaces with changing structure
* more kinds of UI components
* graphical animations
Further information about Grapefruit is available on its wiki page at
If you have questions, applause or criticism, please get in touch with me.
Principal Grapefruit developer
More information about the Haskell-Cafe