Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
A simple FRP library providing leak-free first-class streams.
branch: master
Failed to load latest commit information.
FRP
CHANGES Updated version and changelog.
LICENSE Added noise stuff to Elerea.
README.md Fixed readme formatting, added link to DoW.
Setup.hs Cabalised Elerea and added Haddock-friendly comments.
elerea.cabal Updated list of contributors.

README.md

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.
Something went wrong with that request. Please try again.