### begriffs

Conal Elliott proposed functional reactive programming twenty years ago with a clear denotational semantics. Over time the idea gained popularity but the original conception became blurred. In this video Conal explains FRP’s original formulation and its benefits.

Slides are available here.

### Summary

• FRP is is receiving more interest now but has become misunderstood
• The notion of FRP was very precisely defined 20 years ago
• It allows us to reason precisely and simply
• The term has been used incorrectly to describe systems like Elm, Bacon, and Reactive Extensions
• The true essence is shaped by two fundamental ideas
• Continuous time (its non-strictness enables modularity, see Why Functional Programming Matters)
• Simple denotation allows dependable reasoning
• Reasons for continuous rather than discrete
• Approximations compose badly, so postpone until the end
• We don’t need to have an opinion about what FRP means! Use math.
• There is one datatype: Behavior a
• Then a meaning, or m, of a behavior maps a behavior to a function on time. m :: Behavior a -> (Reals -> a)
• The original formulation of FRP from 1994 lacked the modern vocabulary.
• The modernized formulation
• Behaviors are Functors, Applicatives, and Monoids
• If a is a Monoid then so is Event a
• Comparing the original semantics of Behavior with typeclass instances
• Event is just Behavior composed with the list constructor