Javascript reactive programming and streams

2016-01-04 — 2017-01-05

Wherein stream-processing approaches in JavaScript are surveyed, and multiple libraries such as RxJS are catalogued, while visual pipeline programs and interoperation via transducers and Fantasy Land are noted.

computers are awful
concurrency hell
javascript
UI
Figure 1

Stream processing for javascript. This is not rocket science, but there were enough options that I needed to make a new notebook just to choose. See also this intro to reactive programming from a javascript perspective.

Question: why are there not more visual pipeline programs for this programming domain? It looks like an obvious fit.

1 libraries

  • Rx.js is the Microsoft one, which I use myself. See rxjs.dev/. It is well documented, unlike its competitors, but often seems over-engineered.
  • highland was popular for a while but seems to be a little less frenetically active.
  • kefir also tries to be minimal. See home page.
  • Of course, there are more. Why not bacon.js?
  • task.js seems to be a coroutine-like hack for JS generators by Mozilla.
  • Node.js has (maybe?) a front-runner coroutine implementation, node-fibers, which might be ok.
  • There is a parallel universe system called observablejs which combines some features of FRP and some of javascript visualisation and UI.

2 Elm

A whole language that somehow interoperates?

3 interoperation

  • Fantasy land is a specification for algebraic structures in Javascript which happens to provide interoperation between the below libraries.

  • transducers.js is an actively developed library of transducers for javascript (source code).

  • The incredibly-similar-and-similarly-named transducers-js also works.