An FRP library for Clojure and ClojureScript built on core.async, modeling values that change over time.
Reagi is a functional reactive programming (FRP) library for Clojure and ClojureScript, built on core.async. It introduces behaviors and event streams to model and manipulate values that change over time, providing a declarative way to handle dynamic data flows in functional programming.
Clojure and ClojureScript developers building applications with reactive data flows, such as UIs, real-time systems, or event-driven architectures.
Developers choose Reagi for its seamless integration with core.async, familiar Clojure-style transformations, and cross-platform support, offering a lightweight and idiomatic FRP solution in the Clojure ecosystem.
An FRP library for Clojure and ClojureScript
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Functions like `port` and `subscribe` enable seamless interoperability with core.async channels, allowing developers to mix reactive and asynchronous code effortlessly.
Provides seq-like operations such as `map` on event streams, making transformations familiar and intuitive for Clojure programmers.
Works for both Clojure and ClojureScript, facilitating reactive programming across server and client environments with a consistent API.
Distinguishes between continuous behaviors and discrete event streams, offering a clean model for handling different types of dynamic data.
In Clojure, dereferencing an unrealized event stream blocks the current thread, which can introduce latency and complicate concurrency in performance-sensitive applications.
Requires explicit calls to `dispose` for stream cleanup in ClojureScript, unlike automatic cleanup in Clojure, increasing boilerplate and risk of memory leaks.
Key differences, such as blocking vs. returning js/undefined for unrealized streams between Clojure and ClojureScript, can lead to subtle bugs when porting code.