Hi.
On a commercial project we are preparing several small prototypes to select the best set of technologies for the development process. We already know that some FRP approach is necessary because we will have complex dynamic behavior. Bacon.js and Elm are strong candidates.
Bacon.js works and integration with other libraries is relatively simple. For this prototype we build a backbone models and views, and create EventsStreams from backbone events. So input to the FRP machine is provided by an abstract model independent to the page DOM. The output (stream.onValue(..) on bacon.js) are updates to the backbone model, and this changes on model triggers change on the views.
Thanks to this separation, not all team members need to know about FRP. A team member 'can' learn about FRP, but does not 'have to'. For new members this is great, because they are productive already on the first day of work on the more standard part of the project.
Also testing is simple. We simulate events on the backbone model, and check that output of the FRP machine is correct. We use Qunit for this and execute the tests on the CI server using Rhino after each commit.
We would like to use Elm, because the Signal model seems to be much better. Also the type system is important. The main problem is that this is a 1-0 selection: all in Elm or nothing.
I understand that Elm provide all necessary tools to make the job and the final result will be much better. The issue is that there is not enough skilled persons to setup the team.
Testing is also crucial, and on pure Elm it may be necessary to build some custom testing library.
Note that selection of a final tools is not only related to power of expression. In our case, testing and fast introduction for new members is really important.
I am trying to use foreign export/import to integrate backbone model with a Elm program. I don't need any html output from Elm, just updates to the abstract model. I will share any progress on this.
Regards.
Pawel Cesar Sanjuan Szklarz.