Recs.
Updated
SpecsUpdate
Pros
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 Static module system
Elm uses easy to use modules.
Use:
import List
import List as L
import List exposing (..)
import List exposing ( map, foldl )
import Maybe exposing ( Maybe )
import Maybe exposing ( Maybe(..) )
import Maybe exposing ( Maybe(Just) )
Creation:
module MyModule exposing (foo, bar)
Cons
Con Splitting code in smaller modules can be hard
While organising code in a single module is extremely straightforward, when your update functions seep in, new modules building functionality becomes complicated.
Con Adds an additional layer of abstraction
Some users claim that Elm adds an additional layer of abstraction, meaning that it is one more hurdle between the brain and the product.
Recommendations
Comments
Flagged Pros + Cons
Con Cannot use third party libraries
Elm does not have a Foreign Function Interface (FFI), so you can't really use third party libraries with Elm.
Con Is a full language / syntax to learn (vs. function framework within JS)
Out of Date Pros + Cons
Pro Good way to get introduced to Functional Reactive Programming
You may have already seen reactive programming in other languages, but functional reactive programming requires a purely function programming language like Elm. If you're doing any work on Graphical User Interfaces, you'll be interested in the patterns you can find in a language like Elm, which has built-in support for FRP.