Note that there are some explanatory texts on larger screens.

plurals
  1. POComparing core.async and Functional Reactive Programming (+Rx)
    primarykey
    data
    text
    <p>I seem to be a little bit confused when comparing Clojure's <strong>core.async</strong> to the so called <strong>Reactive Extensions</strong> (Rx) and <strong>FRP</strong> in general. They seem to tackle similar problem of async-hronicity, so I wonder what are the principal differences and in what cases is one preferred over the other. Can someone please explain?</p> <p>EDIT: To encourage more in-depth answers I want to make the question more specific:</p> <ol> <li><p>Core.async allows me to write synchronous-looking code. However as I understand it FRP only needs one level of nested callbacks (all the function that handle logic are passed as arguments to FRP API). This seems that both approaches make the callback <em>pyramids</em> unnecessary. It is true that in JS I have to write <code>function() {...}</code> many times, but the main problem, the <em>nested</em> callbacks, is gone in FRP also. Do I get it right?</p></li> <li><p>"<strong>FRP</strong> complects the communication of messages with flow of control" Can you (someone) please give a more specific explanation?</p></li> <li><p>Can't I pass around FRP's observable endpoints the same way as i pass channels?</p></li> </ol> <p>In general I understand where both approaches historically come from and I have tried few tutorials in both of them. However I seem to be "paralyzed" by the non-obviousness of differences. Is there some <strong>example of a code that would be hard to write in one of these and easy using the other</strong>? And what is the architectural reason of that?</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload