Functional reactive programming

From Wikipedia, the free encyclopedia

Functional reactive programming (FRP) is a programming paradigm for reactive programming using the building blocks of functional programming. FRP has been used for programming GUIs, robotics, and music, aiming to simplify these problems by explicitly modeling time.

Formulations of FRP

FRP has taken many forms since its introduction in 1997.[1] One axis of diversity is discrete vs. continuous semantics. Another axis is how FRP systems can be changed dynamically.[2]

Discrete

Formulations such as Event-Driven FRP and Elm require that updates are discrete and event-driven.[3] These formulations have pushed for practical FRP, focusing on a semantics that have a simple API that can be implemented efficiently in a setting such as robotics or in a web-browser.[4]

In these formulations, it is common that the ideas of behaviors and events have are combined into signals that always have a current value, but change discretely.[5]

Continuous

The earliest formulation of FRP used a continuous semantics, aiming to abstract over many operational details that are not important to the meaning of a program.[6] The key properties of this formulation are:

  • Modeling values that vary over continuous time, called "behaviors" and later "signals".
  • Modeling "events" which have occurrences at finitely many points in time.
  • The system can be changed in response to events, generally termed "switching."
  • The separation of evaluation details such as sampling rate from the reactive model.

This semantic model of FRP in side-effect free languages is typically in terms of continuous functions, and typically over time.[7]

See also

References

  1. Czaplicki, Evan (Apr 2012), Elm: Concurrent FRP for Functional GUIs (PDF) (thesis), Harvard: Test blog, please ignore  .
  2. Nilsson, Henrik; Courtney, Antony; Peterson, John (Feb 2011) [2002], "Functional Reactive Programming, Continued" (PDF), Haskell Workshop (2) .
  3. Taha, Walid; Wan, Zhanyong; Hudak, Paul (2002), "Event-Driven FRP" (PDF), PADL, Yale .
  4. Czaplicki, Evan; Chong, Stephen (2013), "Asynchronous Functional Reactive Programming for GUIs", PLDI, Harvard .
  5. Wan, Zhanyong; Taha, Walid; Hudak, Paul (Feb 2011), "Real-Time FRP" (PDF), ICFP (1) .
  6. Elliott, Conal; Hudak, Paul (1997), "Functional Reactive Animation", ICFP .
  7. Courtney, Antony; Elliott, Conal (Feb 2011) [2001], "Genuinely Functional User Interfaces", Haskell Workshop, Yale .
  8. Animation & 3D: the Web is doing it wrong (World Wide Web log), Taodyne .

External links

This article is issued from Wikipedia. The text is available under the Creative Commons Attribution/Share Alike; additional terms may apply for the media files.