This inspired me to look up the Elm docs, and came across this gem: view model = div [] [ button [ onClick Decrement ] [ text "-" ] , div [] [ text (String.fromInt model) ] , button [ onClick Increment ] [ text "+" ] ] The html elements themselves are Elm functions. Code looks like data. Nice. Now considering Elm to be potentially useful tool to know.
If you like that, you might be interested in ClojureScript's reagent: https://reagent-project.github.io/ And check out re-frame as well, which adds on tools for handling data flow and many other things: https://github.com/Day8/re-frame
the real world implementation in re-frame up on https://github.com/gothinkster/realworld has excellent comments and is a great way to learn it after the docs