Skip to content
forked from cobbpg/elerea

A simple FRP library providing leak-free first-class streams.

License

Notifications You must be signed in to change notification settings

queertypes/elerea

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

74 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Introduction

Elerea (Eventless reactivity) is a tiny discrete time functional reactive programming (FRP) system without the notion of event-based switching and sampling, but with first-class signals (time-varying values). Reactivity is provided through various higher-order constructs that also allow the user to work with arbitrary time-varying structures containing live signals. Signals have precise and simple denotational semantics.

Stateful signals can be safely generated at any time through a monadic interface, while stateless combinators can be used in a purely applicative style. Elerea signals can be defined recursively, and external input is trivial to attach. The library comes in three major variants:

  • Simple: signals are plain discrete streams isomorphic to functions over natural numbers;
  • Param: adds a globally accessible input signal for convenience;
  • Clocked: adds the ability to freeze whole subnetworks at will.

This is a minimal library that defines only some basic primitives, and you are advised to install elerea-examples as well to get an idea how to build non-trivial systems with it. The examples are separated in order to minimise the dependencies of the core library. The dow package contains a full game built on top of the simple variant.

The basic idea of the implementation is described in the WFLP 2010 paper Efficient and Compositional Higher-Order Streams.

Related projects

  • Dungeons of Wor: a simple old-school arcade game programmed with Elerea to serve as a non-trivial example for using the library.
  • Euphoria: a complex reactive framework built around Elerea.
  • Helm: a game engine that uses Elerea for describing interactions and behaviours.
  • LambdaCube 3D: a purely functional GPU pipeline description language, whose showcases mostly rely on Elerea.

About

A simple FRP library providing leak-free first-class streams.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Haskell 100.0%