FRP Resources

Implementations of FRP (in Haskell)

Unfortunately, as of yet there is no satisfactory implementation of FRP. What we do have, is:

  • Reactive - Conal Elliott’s latest, most “FRP-ish” implementation, but buggy? See paper.
  • Yampa - Arrow-based FRP by Yale group. The FRP programs are constructed as a graph (DAG) of “signal functions” using the Arrow library.
  • Several others, all available at Hackage, under the FRP section in the packages list.

Which implementation to use?

Because I’ll be using FRP specifically for a robot, and Yampa has apparently been put to that task succesfully, I’ll use Yampa. I’ll be glad to hear of any workable alternatives.

Papers on FRP

In suggested order of reading. These are all taken from the Yale Haskell Group’s publications page.

Pre-FRP work

My understanding is that Fran was the main trigger for FRP-related work in the past decade. Before that, Conal Elliott has worked on various other projects that were in a similar direction. Here is a short list with Elliott’s own comments on them:

  • ActiveVRML: “ActiveVRML was FRP as its own ML-like language. then i found haskell and switched to using it.”
  • TBAG: “TBAG was temporal programming with functions constraints and without purely declarative reactivity.”
  • MediaFlow: “MediaFlow was similar but mainly for distributed multimedia.”

Papers and more information on all three may be found at http://conal.net/papers/.

Additional resources

Haskell

Functional Programming

Hardware Design and Functional Programming

A lot of work has been done on developting tools for hardware design that use functional programming. Notably, check out The Reduceron which is an implemenation of a graph reduction machine in hardware. Here is a local mirror of some of their documents, formatted nicely using reStructuredText:

  • York Lava - the functional language for hardware design.
  • F-Lite - core language that runs on the Reduceron.