Links
Main Yampa papers
The Yampa Arcade (2003) by Antony Courtney, Henrik Nilsson, John Peterson (archived)
Simulated worlds are a common (and highly lucrative) application domain that stretches from detailed simulation of physical systems to elaborate video game fantasies. We believe that Functional Reactive Programming (FRP) provides just the right level of functionality to develop simulated worlds in a concise, clear and modular way. We demonstrate the use of FRP in this domain by presenting an implementation of the classic “Space Invaders” game in Yampa, our most recent Haskell-embedded incarnation of FRP.
Functional Reactive Programming, Refactored (2016) by Ivan Perez, Manuel Bärenz, Henrik Nilsson
Functional Reactive Programming (FRP) has come to mean many things. Yet, scratch the surface of the multitude of realisations, and there is great commonality between them. This paper investigates this commonality, turning it into a mathematically coherent andpractical FRP realisation that allows us to express the functionality of many existing FRP systems and beyond by providing a minimal FRP core parametrised on a monad. We give proofs for our theoretical claims and we have verified the practical side by benchmarking a set of existing, non-trivial Yampa applications running on top ofour new system with very good results.
Extensible and Robust Functional Reactive Programming (2017) by Iván Pérez Domínguez, MSc (First Year Report)
Programming GUI and multimedia in functional languages has been a long-term challenge, and no solution convinces the community at large. Purely functional GUI and multimedia toolkits enable abstract thinking, but have enormous maintenance costs. General solutions like Functional Reactive Programming present a number of limitations. FRP has traditionally resisted efficient implementation, and existing libraries sacrifice determinism and abstraction in the name of performance. FRP also enforces structural constraints that facilitate reasoning, but at the cost of modularity and separation of concerns. This work addresses those limitations with the introduction of Monadic Stream Functions, anextension to FRP parameterised over a monad. I demonstrate that, in spite of being simpler thanother FRP proposals, Monadic Stream Functions subsume and exceed other FRP implementations. Unlike other proposals, Monadic Stream Functions maintain purity at the type level, whichis crucial for testing and debugging. I demonstrate this advantage by introducing FRP testingfacilities based on temporal logics, together with debugging tools specific for FRP. I present two uses cases for Monadic Stream Functions: First, I show how the new constructsimproved the design of game features and non-trivial games. Second, I present Reactive Valuesand Relations, an abstraction for model-view coordination in GUI programs based on a relationallanguage, built on top of Monadic Stream Functions. Comprehensive examples are used to illustrate the benefits of this proposal in terms of clarity, modularity, feature coverage, and its low maintenance costs. The testing facilities mentioned before are used to encode and statically checkdesired interaction properties.
All Yampa papers
Sorted newest first:
Testing and Debugging Functional Reactive Programming (2017) by Ivan Perez, Henrik Nilsson
Causal Commutative Arrows Revisited (2016) by Jeremy Yallop, Hai Liu
Settable and Non-Interfering Signal Functions for FRP (2014) by Daniel Winograd-Cort, Paul Hudak (more)
Switched-On Yampa (2008) by George Giorgidze, Henrik Nilsson
Dynamic, Interactive Virtual Environments (2008) by Kristopher James Blom
Functional Programming and 3D Games (2005) by Mun Hon Cheong
Arrows, robots, and Functional Reactive Programming (2003) by Paul Hudak, Antony Courtney, Henrik Nilsson, John Peterson
Functional Reactive Programming, Continued (2002) by Henrik Nilsson, Antony Courtney and John Peterson
Wormholes: Introducing Effects to FRP (2012) by Daniel Winograd-Cort, Paul Hudak (video)
Virtualizing Real-World Objects in FRP (2011) by Daniel Winograd-Cort, Hai Liu, Paul Hudak
Causal commutative arrows and their optimization (2009) by Hai Liu, Eric Cheng, and Paul Hudak
Demo-outline: Switched-on Yampa: Programming Modular Synthesizers in Haskell (2007) by George Giorgidze, Henrik Nilsson
Plugging a space leak with an arrow (2007) by Hai Liu, Paul Hudak
Dynamic optimization for functional reactive programming using generalized algebraic data types (2005) by Henrik Nilsson
Non-english Yampa papers
German
Game-Engine-Architektur mit funktional-reaktiver Programmierung in Haskell/Yampa (2010) von Gerold Meisinger
Visuelle Entwicklungsumgebung zur Erzeugung von Haskell AFRP Code (2007) von Piotr Szal
FRP papers
Sorted newest first:
Mathematical Properties of Monadic Stream Functions (2016) by Manuel Bärenz, Ivan Perez, Henrik Nilsson
A Survey of Functional Reactive Programming (2010) by Edward Amsden (archived)
Push-pull functional reactive programming (2009) by Conal Elliott (video) (slides)
Safe functional reactive programming through dependent types (2009) by Neil Sculthorpe, Henrik Nilsson (video)
Genuinely Functional User Interfaces (2001) by Antony Courtney and Conal Elliott
Back to the Future: Time Travel in FRP (2017) by Ivan Perez
Rhine - frp with type-level clocks (2016) by Manuel Bärenz
Higher-order functional reactive programming without spacetime leaks (2013) by N. R. Krishnaswami
Push-Pull Signal-Function Functional Reactive Programming (2012) by E. Amsden
Higher-order functional reactive pro- gramming in bounded space (2012) by N. R. Krishnaswami, N. Benton, J. Hoffmann
Improving Push-based FRP (2008) by W. Jeltsch
E-FRP with priorities (2007) by R. Kaiabachev, W. Taha, A. Zhu
Plugging a space leak with an arrow (2007) by Hai Liu, Paul Hudak
Functional Reactive Programming for Real-Time Reactive Systems (2002) by Wan, Zhanyong
Event-driven FRP (2002) by Z. Wan, W. Taha, P. Hudak
Real-time FRP (2001) by Z. Wan, W. Taha, and P. Hudak
Functional reactive programming from first principles (2000) by Zhanyong Wan, Paul Hudak
Functional reactive animation (1997) by Conal Elliott, Paul Hudak
Functional reactive programming for real-time reactive systems (2002) by Zhanyong Wan
Fault tolerant functional reactive programming (2018) by Ivan Perez
Todo
split up technical papers and tutorials
Other papers
Sorted oldest first:
Why functional programming matters (1990) by John Hughes
Monads for functional programming (1995) Philip Wadler
Generalising monads to arrows (2000) by John Hughes
A New Notation for Arrows (2001) by Ross Paterson
All About Monads (2003) Jeff Newbern
Arrows and Computation (2003) by Ross Paterson
Programming with Arrows (2005) by John Hughes
Applicative Programming with Effects (2008) by Conor McBride, Ross Paterson
Notions of computation and monads (1991) by Moggi
Comprehending monads (1992) by Philip Wadler
Todo
where is the 2000 version of Generalising monads to arrows online?
Codedocs
Hackage Yampa (old Yampa!)
Repos
Examples
Todo
include from https://github.com/ivanperez-keera/Yampa/
Tutorials
Yampy Cube by Konstantin Zudov at Helsinki FRP Meetup May 6, 2015 (video)
Brief Introduction to Functional Reactive Programming and Yampa (2007) Henrik Nilsson
wiki.haskell.org Yampa (old Yampa)
wiki.haskell.org Yampa/reactimate (old Yampa)
The Yampa Arcade - Slides (archived: [1] (old Yampa)
Yampa, Arrows, and Robots by Paul Hudak (old Yampa)
Old Yampa Examples
Libraries
reactive-banana
elera
elm
TODO
Books
The Haskell School of Expression (2000) by Paul Hudak
Haskell High Performance Programming - Chapter 13: Functional Reactive Programming (2016) by Samuli Thomasson
Functional Reactive Programming (2016) by Stephen Blackheath, Anthony Jones
Game programming in Haskell (2015) by Elise Huard
Learn You A Haskell For Great Good! (2011) by Miran Lipovaca
TODO
Bridging the GUI Gap with Reactive Values and Relations (2005) by Ivan Perez, Henrik Nilsson
Fault-Tolerant Swarms
The essence and origins of FRP (2015) by Conal Elliott
Controlling Time and Space: understanding the many formulations of FRP” (2014) by Evan Czaplicki
Imperative functional programming?
Wayward Tide was written in Haskell?
https://notebook.readthedocs.io/en/latest/haskell/learn-you-a-haskell/chapter-2.html
Victor, “Inventing on Principle.” http://vimeo.com/36579366, 2011
Declarative Game Programming (2014) by Henrik Nilsson, Ivan Perez (slides)
Roy, Peter Van und Seif Haridi: Concepts, Techniques, and Models of Computer Programming. MIT Press, 2004.
Asynchronous functional reactive programming for GUIs (2013) by E. Czaplicki and S. Chong
A survey on reactive programming by E. Bainomugisha, A. L. Carreton, T. v. Cutsem, S. Mostinckx, and W. d. Meuter
https://imve.informatik.uni-hamburg.de/files/116-blom_beckhaus_DIVE_VR.pdf
https://imve.informatik.uni-hamburg.de/files/55-SEARISworkshop_DIVEs-FRVR.pdf
Dunai Issue 236 - Bearriver: ArrowLoop yampa and bearriver differences
Dunai Issue 245 - using embed with a constant 1.0 MSF to get (printable) results
Cogs and Levers - Functional Reactive Programming with Yampa