A functional reactive programming domain-specific language for efficient hybrid systems and robotics.
Yampa is a domain-specific language for Functional Reactive Programming (FRP) embedded in Haskell, designed to efficiently model and implement hybrid systems that combine continuous and discrete behaviors. It provides a declarative framework for building reactive applications where time-varying signals and state transitions are central, such as robotics, control systems, and simulations.
Haskell developers and researchers working on robotics, control systems, simulations, or any domain requiring precise modeling of hybrid continuous-discrete behaviors with functional programming guarantees.
Developers choose Yampa for its rigorous Arrow-based FRP semantics, native support for hybrid systems, and the reliability of Haskell's pure functional programming, which together enable correct, maintainable, and compositional reactive systems.
Functional Reactive Programming domain-specific language for efficient hybrid systems
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Native handling of both continuous dynamics and discrete mode switches, making it uniquely suited for robotics and control applications, as highlighted in the key features.
Built on Haskell's Arrow abstraction, enabling predictable and modular composition of signal functions for maintainable reactive networks, per the philosophy.
Guarantees predictable behavior and easier debugging through pure functional programming, ensuring correctness in complex systems, as emphasized in the value proposition.
Includes built-in support for time-based computations like delays and integration, ideal for real-time simulations and signal processing applications.
Tightly coupled with Haskell, requiring significant functional programming expertise and limiting adoption in multi-language or non-Haskell environments.
The arrowized FRP model and hybrid systems concepts are complex, posing challenges for developers unfamiliar with functional reactive programming or Arrow abstractions.
Has a smaller community and fewer third-party tools compared to FRP libraries in more popular languages, which can slow down development and support.