Difference between revisions of "Yampa"
Jump to navigation
Jump to search
(Added link to "Functional Reactive Virtual Reality"; removed link to "Dynamic, Interactive Virtual Environments" PDF, as this file disappeared) |
(Deleted link to "LazyFoo SDL examples translated to Haskell/Yampa" (dead link); updated link to Hamball) |
||
Line 24: | Line 24: | ||
** [http://lambdor.net/?p=117 Dataflow diagram of Yampa reactimate] |
** [http://lambdor.net/?p=117 Dataflow diagram of Yampa reactimate] |
||
** [http://lambdor.net/?p=113 Activity diagram of Yampa reactimate] |
** [http://lambdor.net/?p=113 Activity diagram of Yampa reactimate] |
||
− | * [https://github.com/shaleny/lazyfoo shaleny LazyFoo SDL examples] translated to Haskell/Yampa (lecture 16-) |
||
* References: [https://frvr.svn.sourceforge.net/svnroot/frvr/AFRP/trunk/src/foo.ps ps], [http://lambdor.net/wp-content/uploads/2010/12/AFRP-Reference.pdf pdf] |
* References: [https://frvr.svn.sourceforge.net/svnroot/frvr/AFRP/trunk/src/foo.ps ps], [http://lambdor.net/wp-content/uploads/2010/12/AFRP-Reference.pdf pdf] |
||
* Videos |
* Videos |
||
Line 74: | Line 73: | ||
* [http://www.haskell.org/haskellwiki/Frag Frag]; a simple Quake 3 clone, using a very early version of Yampa called arrowized functional reactive programming (AFRP) |
* [http://www.haskell.org/haskellwiki/Frag Frag]; a simple Quake 3 clone, using a very early version of Yampa called arrowized functional reactive programming (AFRP) |
||
* {{HackagePackage|id=SpaceInvaders}}; a video game, demonstrating the usage of Yampa |
* {{HackagePackage|id=SpaceInvaders}}; a video game, demonstrating the usage of Yampa |
||
− | * {{HackagePackage|id= |
+ | * {{HackagePackage|id=cuboid}}; a small puzzle game |
* {{HackagePackage|id=Haskelloids}}; asteroids clone |
* {{HackagePackage|id=Haskelloids}}; asteroids clone |
||
* [http://haskell.cs.yale.edu/?page_id=376 Nettle] - Programming Network Routers |
* [http://haskell.cs.yale.edu/?page_id=376 Nettle] - Programming Network Routers |
||
Line 83: | Line 82: | ||
[https://github.com/search?q=yampa&repo=&langOverride=&start_value=1&type=Everything&language=Haskell search Github] |
[https://github.com/search?q=yampa&repo=&langOverride=&start_value=1&type=Everything&language=Haskell search Github] |
||
− | * [https://github.com/ |
+ | * [https://github.com/harley/hamball Hamball] |
* [https://github.com/werk/YampaShooter YampaShooter] |
* [https://github.com/werk/YampaShooter YampaShooter] |
||
Revision as of 08:34, 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
Introduction
- Henrik Nilsson - A Brief Introduction to Functional Reactive Programming and Yampa
- Henrik Nilsson - ITU-FRP2010
- Paul Hudak - Yampa, Arrows, and Robots
- Yampa tutorials by Gerold Meisinger
- References: ps, pdf
- Videos
Primitive signal functions
(download original Image:Yampa signal functions.svg)
Switches
Each switch comes in two different flavors:
- immediate: switch to the new behaviour immediately and also calculate the return value based on the new behaviour.
- 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'.
Reactimation
External Links
- Yampa-Users mailing list - Yampa-related comments, questions, discussions, and announcements. You can also send bug reports to yampa-bugs@cs.yale.edu.
- Yampy Cube - a live coding presentation with Yampa by Konstantin Zudov at Helsinki FRP Meetup May 6, 2015. (Source code on Github)
- George Giorgidze created YampaSynth, a modular music synthesizer written in Haskell and using Yampa.
- Hai (Paul) Liu papers and slides
- Blog about Yampa - introduction tutorials and diagrams
- Demonstrating a Time Leak in Arrowized FRP
- An overview of Yampa video clips on YouTube
Known users
- 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.
Known forks
- Yampa-core
- Animas
- code cleanup
- Facts and Theories blog by Edward Amsden
- Functional Reactive Virtual Reality