reactive-banana
yampa-glut
Our great sponsors
reactive-banana | yampa-glut | |
---|---|---|
5 | 0 | |
519 | 5 | |
- | - | |
5.2 | 0.0 | |
about 2 months ago | almost 9 years ago | |
Haskell | Haskell | |
BSD 3-clause "New" or "Revised" License | GNU General Public License v3.0 only |
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 <$>:
yampa-glut
We haven't tracked posts mentioning yampa-glut yet.
Tracking mentions began in Dec 2020.
What are some alternatives?
DefendTheKing - A simple multiplayer RTS game
reflex-fsnotify - Watch files and directories for changes using a functional-reactive interface!
rhine - Haskell Functional Reactive Programming framework with type-level clocks
reactive-banana-sdl2 - reactive banana to sdl2 bindings
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
spice - An FRP-based game engine written in Haskell.
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