DIving into Elm has inspired my to learn functional programming. It shares a lot of Haskell’s syntax.
What makes this a better solution than IcedCoffeeScript? It looks like Elm is another language that compiles down to js, but it’s unclear what makes it different from the others.
Also, how is FRP different from regular asynchronous programming, other than that you don’t have to use this nested callbacks thing?
I think the difference is mostly in how a problem is conceptualized. In FRP you think of “signal functions” acting on “signals”. Some input is thought of as generating a signal stream of outgoing events, you then stick some signal functions on that event stream, modifying it, and finally connecting the modified stream to an output of some sort.
From the functional point of view this is nice because the signal functions are pure, they take a signal and return another signal, so no side-effects.
Right. In more traditional asynchronous procedural programming, you’d “perform some actions” in response to something happening. In this system, there is some “ground truth” of data (i.e. “what the user has typed”), and everything else flows as first-class transformations to that stream of data. Those transformations can be reasoned about, analyzed, visualized, etc because they’re regularized.