''Reactive-banana'' is a practical library for [[Functional Reactive Programming]] (FRP).

−

The goal is to create a solid foundation for anything FRP-related.

+

Support the project with a small donation: [http://flattr.com/thing/384682/reactive-banana http://api.flattr.com/button/flattr-badge-large.png]

−

* Users can finally start experimenting with '''graphical user interfaces''' based on FRP since the library can be hooked into ''any'' existing event-based framework like [[wxHaskell]] or [[Gtk2Hs]], and will provide ample documentation.

+

−

* Programmers interested in implementing FRP will have a '''reference''' for a '''simple semantics''' with a working implementation.

+

FRP offers an elegant and concise way to express interactive programs such as graphical user interfaces, animations, [[Reactive-balsa|computer music]] or robot controllers. It promises to avoid the spaghetti code that is all too common in traditional approaches to GUI programming.

−

* It features an '''efficient implementation'''. No more spooky time leaks, predicting space & time usage should be straightforward.

+

+

The goal of the library is to provide a solid foundation.

+

* Writing '''graphical user interfaces''' with FRP is made easy. The library can be hooked into ''any'' existing event-based framework like [[wxHaskell]] or [[Gtk2Hs]]. A plethora of [[#documentation|example code]] helps with getting started. You can mix FRP and imperative style. If you don't know how to express functionality in terms of FRP, just temporarily switch back to the imperative style.

+

* Programmers interested in the implementation of FRP will have a '''reference''' for a '''simple semantics''' with a working implementation. The library stays close to the semantics pioneered by Conal Elliott.

+

* The library features an '''efficient implementation'''. No more spooky time leaks, predicting space & time usage should be straightforward.

[[#feedback|Feedback]] is welcome, I want to hear from you!

[[#feedback|Feedback]] is welcome, I want to hear from you!

Line 12:

Line 18:

== Status ==

== Status ==

−

Current development focuses on providing tutorials, documentation and examples for the library. Furthermore, the author is writing an [https://github.com/HeinrichApfelmus/reactive-banana/tree/master/BlackBoard example application] to flesh out the FRP approach to GUI programming.

+

Current development focuses on dynamic event switching. Examples from game programming and computer music are planned.

1 What is it?

FRP offers an elegant and concise way to express interactive programs such as graphical user interfaces, animations, computer music or robot controllers. It promises to avoid the spaghetti code that is all too common in traditional approaches to GUI programming.

The goal of the library is to provide a solid foundation.

Writing graphical user interfaces with FRP is made easy. The library can be hooked into any existing event-based framework like wxHaskell or Gtk2Hs. A plethora of example code helps with getting started. You can mix FRP and imperative style. If you don't know how to express functionality in terms of FRP, just temporarily switch back to the imperative style.

Programmers interested in the implementation of FRP will have a reference for a simple semantics with a working implementation. The library stays close to the semantics pioneered by Conal Elliott.

The library features an efficient implementation. No more spooky time leaks, predicting space & time usage should be straightforward.