Elm is a pure typed functional language with fully decidable type inference. The syntax of the language is ML-style and very minimalist; in most cases there is only 1 way of writing something since there is little syntactic sugar. It has no user space escape hatches for mutation or direct execution of side effects outside of its runtime IO wrapper. The runtime IO wrapper provides commands (Cmd a) for requesting side effects, subscriptions (Sub a) for receiving notifications of events, and tasks (Task err a) for side effects that are guaranteed to provide some response. It is targetted at writing web applications and compiles to javascript, although it can also run outside of the browser.
Elm has a powerful type system that yields a type for any expression or construct in the language. Type checking is muc more 'complete' than in most other languages and greatly reduces the potential bugs that can be written in code that compiles. The compiler provid