reactive-banana
reactive-banana-sdl2
Our great sponsors
reactive-banana | reactive-banana-sdl2 | |
---|---|---|
5 | 0 | |
519 | 2 | |
- | - | |
5.2 | 0.0 | |
2 months ago | almost 6 years ago | |
Haskell | Haskell | |
BSD 3-clause "New" or "Revised" License | BSD 3-clause "New" or "Revised" License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
reactive-banana
-
Haskell, JS, and WebDev?
As I grew up on a Macintosh, I was always interested in graphical user interfaces. In my free time, I'm currently working on refreshing my reactive-banana library so that it will hopefully work well with the upcoming JavaScript backend. (The library relies on a few non-trivial garbage collector features, which were not implemented in GHCJS a decade ago. Essentially, I ended up with a program that gave different results, depending on whether it was compiled with GHC native or with GHCJS. 😅)
-
How to prevent a deadlock in reactive-banana with event-switching? (Exception: thread blocked indefinitely in an MVar operation)
I am building a GUI-application in GTK and try to use reactive-banana as the style of FRP seems a lot better to work with in Haskell. The basis works: receiving events from the GTK-side lets me properly update the internal state. The problem however is when I want to create my own events and hook them onto the rest of the event-network I get a deadlock. I already sent an issue on Github, https://github.com/HeinrichApfelmus/reactive-banana/issues/216 , but looking at the commits it seems it is not that actively maintained anymore. I was able to find some kind of work-around for a basic use-case, but it is not enough when dealing with an event-stream that will fire multiple events. I created the following test-code to check where the problem lies (a bit simplified from the one on Github): {-# LANGUAGE RecursiveDo, LambdaCase #-} module Main where import Control.Monad.IO.Class (liftIO) import qualified Reactive.Banana as B import qualified Reactive.Banana.Frameworks as BF
There are some examples that also use event-switching, like https://github.com/HeinrichApfelmus/reactive-banana/blob/master/reactive-banana-wx/src/BarTab.hs , which also seems to use execute. They use <$ though instead of <$>:
reactive-banana-sdl2
We haven't tracked posts mentioning reactive-banana-sdl2 yet.
Tracking mentions began in Dec 2020.
What are some alternatives?
DefendTheKing - A simple multiplayer RTS game
reactive-bacon - FRP (functional reactive programming) framework inspired by RX and Iteratee
rhine - Haskell Functional Reactive Programming framework with type-level clocks
yampa-glut - Yampa adapter for GLUT
reflex-dom - Web applications without callbacks or side-effects. Reflex-DOM brings the power of functional reactive programming (FRP) to the web. Build HTML and other Document Object Model (DOM) data with a pure functional interface.
dunai - Classic FRP, Arrowized FRP, Reactive Programming, and Stream Programming, all via Monadic Stream Functions
netwire - FRP library
reactive-thread
essence-of-live-coding-gloss - Universal Live Coding & Functional Reactive Programming Framework
Rattus - A modal FRP language embedded in Haskell.
sodium - Sodium - Functional Reactive Programming (FRP) Library for multiple languages