Functional reactive programming

Functional reactive programming

Functional reactive programming ("FRP" for short) is a programming paradigm for reactive programming using the building blocks of functional programming [cite web|author=Henrik Nilsson|title=Functional Reactive Programming Research|url=http://www.haskell.org/frp/|accessdate=2006-10-17] .

The key points of FRP are [cite web|title=usenet discussion|url=http://groups.google.com/group/flapjax/browse_thread/thread/2de4808143a5e751/5b1a6e4d6102e4e2?q=claird&rnum=5#5b1a6e4d6102e4e2] :
* Input is viewed as a "behavior", or time-varying stream of events
* Continuous, time-varying values
* Time-ordered sequences of discrete events

According to [http://wiki.opendylan.org/wiki/view.dsp?title=Functional%20Reactive%20Programming Peter van Roy] :

Functional Reactive Programming like functional programming except that each function can accept a stream of input values. If a new input value arrives on an argument, then the function is reevaluated with all the most recent input values and a new output value is created. This is a kind of dataflow programming. It can handle nondeterminism, so it is more expressive than declarative concurrency. In fact, it can be implemented with the declarative concurrent model extended with WaitTwo. (This means that it is similar in expressiveness to concurrent logic programming!)

References

See also

* Concepts, Techniques, and Models of Computer Programming
* Flapjax, an implementation for JavaScript
* JavaFX, a Java-based language with data binding feature (using the bind keyword)

External links

* [http://www.haskell.org/haskellwiki/Functional_Reactive_Programming Haskell related FRP research]
* [http://citeseer.ist.psu.edu/cooper04frtime.html FrTime] , a PLT Scheme implementation


Wikimedia Foundation. 2010.

Игры ⚽ Поможем решить контрольную работу

Look at other dictionaries:

  • Reactive programming — is a programming paradigm oriented around data flows and the propagation of change. This means that it should be possible to express static or dynamic data flows with ease in the programming languages used, and that the underlying execution model …   Wikipedia

  • Dataflow programming — Programming paradigms Agent oriented Automata based Component based Flow based Pipelined Concatenative Concurrent computing …   Wikipedia

  • Racket (programming language) — Racket Paradigm(s) Multi paradigm: Functional, Procedural, Modular, Object oriented, Reflective, Meta Appeared in 1994 Developer …   Wikipedia

  • Programming paradigm — Programming paradigms Agent oriented Automata based Component based Flow based Pipelined Concatenative Concu …   Wikipedia

  • Programming in the large and programming in the small — Programming paradigms Agent oriented Automata based Component based Flow based Pipelined Concatenative Concurrent computin …   Wikipedia

  • Arrows in functional programming — In computer science, arrows provide a more general interface to computation than monads. Monads essentially provide a sequential interface to computation: one can build a computation out of a value, or sequence two computations together. Arrows… …   Wikipedia

  • Subtext (programming language) — Schematic tables. An alpha build of the Subtext environment, which illustrates the unique polymorphic conditionals present in the IDE. Subtext is a moderately visual programming language and environment, for writing application software. It is an …   Wikipedia

  • List of programming languages by category — Programming language lists Alphabetical Categorical Chronological Generational This is a list of programming languages grouped by category. Some languages are listed in multiple categories. Contents …   Wikipedia

  • Declarative programming — Programming paradigms Agent oriented Automata based Component based Flow based Pipelined Concatenative Concurrent computing …   Wikipedia

  • Object-oriented programming — Programming paradigms Agent oriented Automata based Component based Flow based Pipelined Concatenative Concurrent computing …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”