Personal tools

Yampa

From HaskellWiki

(Difference between revisions)
Jump to: navigation, search
(Updated links to Vimeo, Euterpea, Nettle, foo.ps)
(Updated links to FRVR source code, George Giorgidze, Euterpea: From signals to symphonies)
Line 28: Line 28:
 
** [https://vimeo.com/6632457 Safe Functional Reactive Programming through Dependent Types]
 
** [https://vimeo.com/6632457 Safe Functional Reactive Programming through Dependent Types]
 
** [https://vimeo.com/6652662 Causal Commutative Arrows and Their Optimization]
 
** [https://vimeo.com/6652662 Causal Commutative Arrows and Their Optimization]
** [http://www.youtube.com/watch?v=xtmo6Bmfahc Euterpea: From signals to symphonies]
+
** [https://www.youtube.com/watch?v=xtmo6Bmfahc Euterpea: From signals to symphonies]
  
 
== Primitive signal functions ==
 
== Primitive signal functions ==
Line 59: Line 59:
 
* [http://mailman.cs.yale.edu/mailman/listinfo/yampa-users Yampa-Users mailing list] - Yampa-related comments, questions, discussions, and announcements.  You can also send bug reports to [mailto:yampa-bugs@cs.yale.edu yampa-bugs@cs.yale.edu].
 
* [http://mailman.cs.yale.edu/mailman/listinfo/yampa-users Yampa-Users mailing list] - Yampa-related comments, questions, discussions, and announcements.  You can also send bug reports to [mailto:yampa-bugs@cs.yale.edu yampa-bugs@cs.yale.edu].
 
* [https://www.youtube.com/watch?feature=player_detailpage&v=T7XwTolu9YI Yampy Cube] - a live coding presentation with Yampa by Konstantin Zudov at Helsinki FRP Meetup May 6, 2015. [https://github.com/helsinki-frp/yampy-cube (Source code on Github)]
 
* [https://www.youtube.com/watch?feature=player_detailpage&v=T7XwTolu9YI Yampy Cube] - a live coding presentation with Yampa by Konstantin Zudov at Helsinki FRP Meetup May 6, 2015. [https://github.com/helsinki-frp/yampy-cube (Source code on Github)]
* [http://www.cs.nott.ac.uk/~ggg/ George Giorgidze] created YampaSynth, a modular music synthesizer written in Haskell and using Yampa.
+
* [http://db.inf.uni-tuebingen.de/team/GeorgeGiorgidze.html George Giorgidze] created YampaSynth, a modular music synthesizer written in Haskell and using Yampa.
 
* [http://www.thev.net/PaulLiu/#publications Hai (Paul) Liu papers and slides]
 
* [http://www.thev.net/PaulLiu/#publications Hai (Paul) Liu papers and slides]
 
* [http://lambdor.net Blog about Yampa] - introduction tutorials and diagrams
 
* [http://lambdor.net Blog about Yampa] - introduction tutorials and diagrams
Line 92: Line 92:
 
** code cleanup
 
** code cleanup
 
* [http://imve.informatik.uni-hamburg.de/projects/FRVR Functional Reactive Virtual Reality]
 
* [http://imve.informatik.uni-hamburg.de/projects/FRVR Functional Reactive Virtual Reality]
** [https://frvr.svn.sourceforge.net/svnroot/frvr/AFRP/trunk FRVR source code]
+
** [https://svn.code.sf.net/p/frvr/code/AFRP/trunk/ FRVR source code]
 
** [http://imve.informatik.uni-hamburg.de/projects/DIVE DIVE project]
 
** [http://imve.informatik.uni-hamburg.de/projects/DIVE DIVE project]
  

Revision as of 09:03, 15 September 2015

Yampa is a domain-specific embedded language for the programming of hybrid (discrete and continuous time) 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.

Yampa was originally developed by the Yale Haskell Group based on the original idea of Conal Elliott's Fran.

Hackage: Yampa

Contents

1 Introduction

2 Primitive signal functions

Yampa signal functions.png

(download original Image:Yampa signal functions.svg‎)

3 Switches

Each switch comes in two different flavors:

  1. immediate: switch to the new behaviour immediately and also calculate the return value based on the new behaviour.
  2. delayed: return the value based on the old behaviour, but use the new behaviour afterwards. To use delayed switch prefix the switching functions with the letter 'd', f.e. 'drpSwitchB'.

4 Reactimation

5 External Links

6 Known users

search Hackage

  • YampaSynth - is a software synthesizer implemented in Haskell using Yampa. It contains a framework of sound generating and sound shaping modules (e.g. oscillator, amplifier, mixer, envelope generator, filter, etc.) and example applications.
  • Frag; a simple Quake 3 clone, using a very early version of Yampa called arrowized functional reactive programming (AFRP)
  • SpaceInvaders; a video game, demonstrating the usage of Yampa
  • cuboid; a small puzzle game
  • Haskelloids; asteroids clone
  • Nettle - Programming Network Routers
  • Euterpea - computer music development (also uses CCA)
  • YFrob; robot simulation
  • Haskanoid A breakout-like videogame with SDL graphics and sound that can optionally be controlled with a Wiimote.

search Github

7 Known forks