Strokes: Let's pretend D3 was written in ClojureScript
github.com
github.com
https://github.com/seliopou/elm-d3
In all fairness mBostock works very hard on d3 and he is prolific at it as evidence by his bl.ocks.org pages but his library is very opinionated as well
If there's somebody from the Elm community that would like to help out in maintaining elm-d3, let me know. Experience with the FFI that you can point to is required.
Probably worth checking out the main site for an overview if you haven't seen it before:
I've used d3 as a replacement for react and it performs quite well—though you have to be a bit more explicit when it comes to updates.
In short, you get some data, you join it with a selection of wholly or partially non-existent DOM, and then you work with the enter (new), update (existing) and exit (not required for the new data) selection. This is an extremely powerful metaphor for representing data and performing dynamic data updates using arbitrary mixes of SVG (or any other DOM) elements. (oh, based on this mechanism, you can build really beautiful visual transitions)
Here's a short introduction to the join idea in d3: https://bost.ocks.org/mike/join/
BTW, programming in d3.js already feels a whole lot like programming in a functional language.
D3 has some really nice graphing utilities, though. Their scale functions are handy and their geometry API is spectacular: https://github.com/mbostock/d3/wiki/Geometry