Yampa: Functional Reactive Programming with Arrows

Yampa

Yampa is the culmination of our efforts to provide domain-specific embedded languages for the programming of hybrid systems using the concepts of Functional Reactive Programming (FRP). Yampa is structured using arrows, which greatly reduce the chance of introducing space- and time-leaks into reactive, time-varying systems.

Documentation

A tutorial, which was part of the Advanced Summer School on Functional Programming in Oxford, August 2002, can be found here. (It's also included with the Yampa Robotics Simulator Bundle) The publication page of our group contains references to other publications on various aspects of FRP and Yampa that may be of interest. In particular Functional Reactive Programming, Continued covers some advanced topics beyond what is covered in the tutorial.

Availability

Yampa is still under active development. We occasionally make snapshots of our source code available for interested parties to learn more and experiment with using Yampa for their own applications.

Downloading

Yampa releases include complete source code and detailed instructions on how to configure, build and install Yampa with either GHC or Hugs98 on either Linux or Windows. Caveat: This is a snapshot of work in progress. While we are very interested in having other users explore and experiment with Yampa, we make no claims that this is a finished product, and we reserve the right to make non-backward-compatible changes to the library interface in subsequent releases.

Yampa is currently provided in two different forms:


Yampa Robotics Simulator Bundle

This contains a source-only release of Yampa, as well as a robotics library and graphical interactive robotics simulator. This is essentially the software that was used at the Advanced Functional Programming summer school in Oxford in 2002. The bundle includes sources for the Arrow module, the Arrowp preprocessor, and HGL (for X, not Windows) as well. Version 0.9.1 is a minor update of 0.9, including a version of HGL that should compile with GHC 5.04.1. This release has only been tested with GHC and on Linux/x86 and Solaris/Sparc platforms. It is unlikely to run out of the box on Windows machines, particularly if you don't have a working version of HGL.

Download: Yampa-0.9.1.tgz


Yampa Core

This package contains just the source code for the Yampa core, test suite and example programs. This release is intended for developers or advanced users, as you will have to provide significant amounts of extra software to interface Yampa with your particular application domain (such as robotics or graphics) in order to do anything interesting with Yampa. This package will always contain the most up-to-date released version of the Yampa source code and license, so developers planning to use Yampa in their own projects should always fetch and install this version.

Download:

N.B.: The above distributions contain the same files, but use line-termination conventions in text files appropriate to the given platform.


Feedback

We are very interested in hearing from users. We have set up a mailing list for Yampa-related comments, questions, discussions, and announcements: yampa-users@cs.yale.edu. To subscribe, click here. There is a separate list for reporting bugs: yampa-bugs@cs.yale.edu You can also get in touch directly with any of us using the e-mail addresses listed below.

What's Yampa?

YaMPA doesn't really mean anything, but this work started at Yale, ended with Arrows, and had Much Programming in the middle. Yampa is also a river in Colorado that combines continuous, placid sections with an occasional abrupt transition - a perfect metaphor for hybrid systems. We used to call this AFRP, but that's too hard to pronounce.

Contributors

Yampa was developed in the Yale Haskell Group. The main contributors to the present release are:
Antony Courtney antony@apocalypse.org
Paul Hudak paul.hudak@yale.edu
Henrik Nilsson nilsson@cs.yale.edu
John Peterson peterson-john@cs.yale.edu


Last updated March 22 2004 by Antony Courtney