Reactive-banana is a library for Functional Reactive Programming (FRP), written in Haskell.
See the project homepage for documentation, examples and so on.
To build and install the core library from the source repository, simply type
cd reactive-banana && cabal install && cd ..
However, to try out the GUI examples, you have to install one of the of the additional packages.
Prerequisites: the wxHaskell package
cabal install wx
Note that you need to have a development version of the wxWidgets libraries installed before building wx. If you run into ExitFailure 1
exceptions, please follow the wxHaskell Quick Start instructions and try again.
To build the wx examples, type
cd reactive-banana-wx
cabal configure -fbuildExamples && cabal build
cd ..
The project contains several directories:
reactive-banana
— the core libraryreactive-banana-wx
— bindings to the wxHaskell GUI library, includes many examples
The reactive-banana library actually contains two FRP implementations:
- Reactive.Banana.Model - A model implementation for testing and understanding the semantics. You are encouraged to look at the source code.
- Reactive.Banana.Prim - The efficient push-driven implementation used for production code. Contains hard to understand trade secrets. ;-)
The source code is distributed under a BSD3 license. See the LICENSE
files in the corresponding subdirectories.
The reactive-banana mascot [png] is licensed under a Creative Commons Attribution 4.0 International License with attribution to Heinrich Apfelmus and the reactive-banana library.
Send me your examples, bindings, problems, suggestions, etc!
Many thanks to
Alexander Berntsen, Oliver Charles, Samuel Gélineau, madjestic, and also Abu Alam, Markus Barenhoff, Vincent Berthoux, Kevin Cantu, Gregory Crosswhite, Peter Hillerström, Joseph Heinemeyer, Elliott Hird, Matt Kraai, John Lato, Vladimir Lopatin, Peter Minten, Gideon Sireling, Henning Thielemann, Daniel Werner
for their contributions!