Recs.
Updated
Elm is a functional programming language that compiles to HTML, CSS, and Javascript. Its very Haskell-like syntax allows users to build complex event-based systems with an incredibly small amount of concise, readable code, as can be seen from the examples
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 Low mental overhead
Few programming concepts need to be kept in mind while programming in Elm (particularly the case from version 0.17 onwards). This is beneficial for learners new to programming, but it also helps more experienced programmers to focus on application logic instead of "administration" needed to work in a particular framework/language. This keeps the cost of refactoring low, which is also a pro for beginners and experts alike, making it sensible to stay in Elm after gaining more experience.
Pro Missing Syntactic sugar
Easy to learn, most functions have only one way, not 5 alternatives where you must study where to best use what. No semicolons, weird operators, unpronounceable functions. Elm strives to have unsurprising naming and simplified syntax relative to other Haskell/ML-like languages.
Pro Haskell-like modules
Elm uses easy to use Haskell-like 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)