Recs.
Updated
SpecsUpdate
Pros
Pro Strictly functional
Functional by design, not developer decision. Compiletime checks.
Pro Great and simple way to learn Purely Functional Programming
You can try to apply some functional programming ideas in other languages that have an imperative basis, but you haven't seen the real power unless you tried it in the environment of purely functional programming. Elm is a simple language with great learning resources and easy graphical output, which makes it easy to explore the power of functional programming. Plus programming in Elm is very readable.
Pro Reactive
In Elm every component is completely self responsible and instead of changing other components, all data is propagated through the program. Every component/module can listen to specific parts of that. To say it more clearly: state is a pure function of the past. See the first couple of paragraphs of this article for the best introduction I've read to the day ( https://gist.github.com/staltz/868e7e9bc2a7b8c1f754 ).
Pro Awesome debugging
For example: all exceptions are handled at compile time (thats right no runtime exceptions) and the incredible time travelling debugger (http://debug.elm-lang.org/).

Cons
Con Not database-friendly
It is lots of work to make a server or database your "one source of truth", as Elm makes you write endless JSON parse boilerplate to talk to the server.
Recommendations
Comments
See Product Page for "Elm"