Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 260023
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 11, 20262026-05-11T22:18:47+00:00 2026-05-11T22:18:47+00:00

I’ve read the Wikipedia article on reactive programming . I’ve also read the small

  • 0

I’ve read the Wikipedia article on reactive programming. I’ve also read the small article on functional reactive programming. The descriptions are quite abstract.

  1. What does functional reactive programming (FRP) mean in practice?
  2. What does reactive programming (as opposed to non-reactive programming?) consist of?

My background is in imperative/OO languages, so an explanation that relates to this paradigm would be appreciated.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-11T22:18:48+00:00Added an answer on May 11, 2026 at 10:18 pm

    If you want to get a feel for FRP, you could start with the old Fran tutorial from 1998, which has animated illustrations. For papers, start with Functional Reactive Animation and then follow up on links on the publications link on my home page and the FRP link on the Haskell wiki.

    Personally, I like to think about what FRP means before addressing how it might be implemented.
    (Code without a specification is an answer without a question and thus “not even wrong”.)
    So I don’t describe FRP in representation/implementation terms as Thomas K does in another answer (graphs, nodes, edges, firing, execution, etc).
    There are many possible implementation styles, but no implementation says what FRP is.

    I do resonate with Laurence G’s simple description that FRP is about “datatypes that represent a value ‘over time’ “.
    Conventional imperative programming captures these dynamic values only indirectly, through state and mutations.
    The complete history (past, present, future) has no first class representation.
    Moreover, only discretely evolving values can be (indirectly) captured, since the imperative paradigm is temporally discrete.
    In contrast, FRP captures these evolving values directly and has no difficulty with continuously evolving values.

    FRP is also unusual in that it is concurrent without running afoul of the theoretical & pragmatic rats’ nest that plagues imperative concurrency.
    Semantically, FRP’s concurrency is fine-grained, determinate, and continuous.
    (I’m talking about meaning, not implementation. An implementation may or may not involve concurrency or parallelism.)
    Semantic determinacy is very important for reasoning, both rigorous and informal.
    While concurrency adds enormous complexity to imperative programming (due to nondeterministic interleaving), it is effortless in FRP.

    So, what is FRP?
    You could have invented it yourself.
    Start with these ideas:

    • Dynamic/evolving values (i.e., values “over time”) are first class values in themselves. You can define them and combine them, pass them into & out of functions. I called these things “behaviors”.

    • Behaviors are built up out of a few primitives, like constant (static) behaviors and time (like a clock), and then with sequential and parallel combination. n behaviors are combined by applying an n-ary function (on static values), “point-wise”, i.e., continuously over time.

    • To account for discrete phenomena, have another type (family) of “events”, each of which has a stream (finite or infinite) of occurrences. Each occurrence has an associated time and value.

    • To come up with the compositional vocabulary out of which all behaviors and events can be built, play with some examples. Keep deconstructing into pieces that are more general/simple.

    • So that you know you’re on solid ground, give the whole model a compositional foundation, using the technique of denotational semantics, which just means that (a) each type has a corresponding simple & precise mathematical type of “meanings”, and (b) each primitive and operator has a simple & precise meaning as a function of the meanings of the constituents.
      Never, ever mix implementation considerations into your exploration process. If this description is gibberish to you, consult (a) Denotational design with type class morphisms, (b) Push-pull functional reactive programming (ignoring the implementation bits), and (c) the Denotational Semantics Haskell wikibooks page. Beware that denotational semantics has two parts, from its two founders Christopher Strachey and Dana Scott: the easier & more useful Strachey part and the harder and less useful (for software design) Scott part.

    If you stick with these principles, I expect you’ll get something more-or-less in the spirit of FRP.

    Where did I get these principles? In software design, I always ask the same question: “what does it mean?”.
    Denotational semantics gave me a precise framework for this question, and one that fits my aesthetics (unlike operational or axiomatic semantics, both of which leave me unsatisfied).
    So I asked myself what is behavior?
    I soon realized that the temporally discrete nature of imperative computation is an accommodation to a particular style of machine, rather than a natural description of behavior itself.
    The simplest precise description of behavior I can think of is simply “function of (continuous) time”, so that’s my model.
    Delightfully, this model handles continuous, deterministic concurrency with ease and grace.

    It’s been quite a challenge to implement this model correctly and efficiently, but that’s another story.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Ask A Question

Stats

  • Questions 149k
  • Answers 149k
  • Best Answers 0
  • User 1
  • Popular
  • Answers
  • Editorial Team

    How to approach applying for a job at a company ...

    • 7 Answers
  • Editorial Team

    How to handle personal stress caused by utterly incompetent and ...

    • 5 Answers
  • Editorial Team

    What is a programmer’s life like?

    • 5 Answers
  • Editorial Team
    Editorial Team added an answer it turns out that theres no way of doing this… May 12, 2026 at 9:35 am
  • Editorial Team
    Editorial Team added an answer A thought - if you used svn:externals to reference your… May 12, 2026 at 9:35 am
  • Editorial Team
    Editorial Team added an answer Without any more information i dont see why not. Basicly… May 12, 2026 at 9:35 am

Related Questions

I ran into a problem. Wrote the following code snippet: teksti = teksti.Trim() teksti
I am currently running into a problem where an element is coming back from
Seemingly simple, but I cannot find anything relevant on the web. What is the
Does anyone know how can I replace this 2 symbol below from the string
Configuring TinyMCE to allow for tags, based on a customer requirement. My config is

Trending Tags

analytics british company computer developers django employee employer english facebook french google interview javascript language life php programmer programs salary

Top Members

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.