ICFP '97 Proceedings of the second ACM SIGPLAN international conference on Functional programming
Science of Computer Programming - Special issue on mathematics of program construction
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
Functional reactive programming, continued
Proceedings of the 2002 ACM SIGPLAN workshop on Haskell
Lambda in Motion: Controlling Robots with Haskell
PADL '99 Proceedings of the First International Workshop on Practical Aspects of Declarative Languages
Frappé: Functional Reactive Programming in Java
PADL '01 Proceedings of the Third International Symposium on Practical Aspects of Declarative Languages
Functional Implementations of Continuous Modeled Animation
PLILP '98/ALP '98 Proceedings of the 10th International Symposium on Principles of Declarative Programming
FVision: A Declarative Language for Visual Tracking
PADL '01 Proceedings of the Third International Symposium on Practical Aspects of Declarative Languages
Haskell '03 Proceedings of the 2003 ACM SIGPLAN workshop on Haskell
Applicative programming with effects
Journal of Functional Programming
Safe functional reactive programming through dependent types
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
Push-pull functional reactive programming
Proceedings of the 2nd ACM SIGPLAN symposium on Haskell
Flapjax: a programming language for Ajax applications
Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications
Embedding dynamic dataflow in a call-by-value language
ESOP'06 Proceedings of the 15th European conference on Programming Languages and Systems
Causality for free!: parametricity implies causality for functional reactive programs
PLPV '13 Proceedings of the 7th workshop on Programming languages meets program verification
Hi-index | 0.00 |
Functional Reactive Programming (FRP) is a way to program reactive systems in functional style, eliminating many of the problems that arise from imperative techniques. In this paper, we present an alternative FRP formulation that is based on the notion of a reactive computation: a monadic computation which may require the occurrence of external events to continue. A signal computation is a reactive computation that may also emit values. In contrast to signals in other FRP formulations, signal computations can end, leading to a monadic interface for sequencing signal phases. This interface has several advantages: routing is implicit, sequencing signal phases is easier and more intuitive than when using the switching combinators found in other FRP approaches, and dynamic lists require much less boilerplate code. In other FRP approaches, either the entire FRP expression is re-evaluated on each external stimulus, or impure techniques are used to prevent redundant re-computations. We show how Monadic FRP can be implemented straightforwardly in a purely functional way while preventing redundant re-computations.