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