Difference between revisions of "Yampa"

From HaskellWiki
Jump to navigation Jump to search
(→‎Known users: Haskanoid)
(20 intermediate revisions by 4 users not shown)
Line 1: Line 1:
Yampa is a domain-specific embedded language for the programming of hybrid (discrete and continious) systems using the concepts of [[Functional Reactive Programming]] (FRP). Yampa is structured using [[Arrow]]s, which greatly reduce the chance of introducing space- and time-leaks into reactive, time-varying systems.
+
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 [[Arrow]]s, which greatly reduce the chance of introducing space- and time-leaks into reactive, time-varying systems.
   
Yampa was originally developed by the [http://haskell.cs.yale.edu/ Yale Haskell Group].
+
Yampa was originally developed by the [http://haskell.cs.yale.edu/ Yale Haskell Group] based on the original idea of [http://www.conal.net Conal Elliott's] [http://conal.net/fran/ Fran].
   
  +
Hackage: {{HackagePackage|id=Yampa}}
'''[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/Yampa Download Yampa]'''
 
   
 
== Introduction ==
 
== Introduction ==
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 40: Line 41:
 
* [[Yampa/switch|switch]]
 
* [[Yampa/switch|switch]]
 
* [[Yampa/rSwitch|rSwitch]]
 
* [[Yampa/rSwitch|rSwitch]]
* [[Yampa/rSwitch|kSwitch]]
+
* [[Yampa/kSwitch|kSwitch]]
 
* [[Yampa/pSwitchB|pSwitchB]]
 
* [[Yampa/pSwitchB|pSwitchB]]
 
* [[Yampa/pSwitch|pSwitch]]
 
* [[Yampa/pSwitch|pSwitch]]
Line 65: Line 66:
   
 
== Known users ==
 
== Known users ==
  +
  +
[https://www.google.com/search?hl=en&q=yampa%20site%3Ahackage.haskell.org%2Fpackage&aqi=g10 search Hackage]
 
 
* [http://hackage.haskell.org/cgi-bin/hackage-scripts/package/YampaSynth 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.
+
* {{HackagePackage|id=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.
  +
* [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://hackage.haskell.org/cgi-bin/hackage-scripts/package/SpaceInvaders Space Invaders]; a video game, demonstrating the usage of Yampa
+
* {{HackagePackage|id=SpaceInvaders}}; a video game, demonstrating the usage of Yampa
  +
* {{HackagePackage|id=Cuboid}}; a small puzzle game
  +
* {{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
 
* [http://haskell.cs.yale.edu/?page_id=103 Euterpea] - computer music development (also uses [[CCA]])
 
* [http://haskell.cs.yale.edu/?page_id=103 Euterpea] - computer music development (also uses [[CCA]])
  +
* {{HackagePackage|id=YFrob}}; robot simulation
  +
* [http://github.com/ivanperez-keera/haskanoid Haskanoid] A breakout-like videogame with SDL graphics and sound that can optionally be controlled with a Wiimote.
  +
  +
[https://github.com/search?q=yampa&repo=&langOverride=&start_value=1&type=Everything&language=Haskell search Github]
  +
  +
* [https://github.com/harleyttd/hamball Hamball]
  +
* [https://github.com/werk/YampaShooter YampaShooter]
   
 
== Known forks ==
 
== Known forks ==
   
  +
* [https://github.com/ony/Yampa-core Yampa-core]
  +
** [http://mailman.cs.yale.edu/pipermail/yampa-users/2012-May/ related discussion]
 
* [https://github.com/eamsden/Animas Animas]
 
* [https://github.com/eamsden/Animas Animas]
 
** code cleanup
 
** code cleanup
Line 83: Line 98:
 
[[Category:FRP]]
 
[[Category:FRP]]
 
[[Category:Arrow]]
 
[[Category:Arrow]]
  +
[[Category:Music]]
  +
[[Category:Robotics]]

Revision as of 12:39, 14 November 2014

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

Primitive signal functions

Yampa signal functions.png

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

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'.

Reactimation

External Links

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

Known forks