Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
(patches to original) Reactive-banana is a library for functional reactive programming, written in the beautiful language Haskell.
Haskell
Branch: master
Pull request Compare This branch is 247 commits behind HeinrichApfelmus:master.

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
reactive-banana-wx
reactive-banana
.gitignore
Makefile
README.md
banana.png

README.md

What is reactive-banana?

Reactive-banana is a practical library for Functional Reactive Programming (FRP), written in Haskell.

Support the project with a small donation: Flattr this

See the project homepage for documentation, examples and so on.

I'm writing documentation on a call-by-need basis. So, feel free to write me an email if you want something explained that you don't understand, and I'll explain it to you!

How is the source code structured?

The project contains two directories:

  • reactive-banana - the library itself
  • reactive-banana-wx - bindings to the wxHaskell GUI library, includes many examples

The reactive-banana library actually contains two FRP implementations:

  1. Reactive.Banana.Internal.Model - A model implementation for testing and understanding the semantics. You are encouraged to look at the source code.
  2. Reactive.Banana.Internal.PushGraph - The efficient push-driven implementation used for production code. Contains hard to understand trade secrets. ;-)

Compilation

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 reactive-banana libraries, type

cd reactive-banana && cabal configure && cabal build && cd ..
cd reactive-banana-wx && cabal configure && cabal build && cd ..

Contribute

Send me your examples, bindings, problems, suggestions, etc!

With contributions from

  • Abu Alam
  • Kevin Cantu
  • Gregory Crosswhite
  • Elliott Hird
  • John Lato
  • Gideon Sireling
  • Henning Thielemann
  • Daniel Werner
Something went wrong with that request. Please try again.