Elm is a programming language used to declaratively create GUIs based on web browsers. The language compiles to JavaScript generating CSS and HTML. It resembles Haskell in the sense that it's characterized by static typing, resulting in more proper code. It also makes use of the purely functional graphical layout, which makes it robust and a better performer in general.


  • Suitable for novices due to the easy to read compiler errors, simple tooling, etc
  • It’s highly typesafe. As soon as it compiles the chances to experience runtime errors are minimal
  • Its architecture allows the creation of simple SPAs, without needing to utilize numerous libraries
  • The language design is very elegant and most developers are delighted by this aspect


  • The simplistic type system can cause frustration generated by all the boilerplate
  • It’s a client-side only language lacking support for isomorphic applications
  • Code splitting is not supported
  • For the non-trivial applications, the debugger/reactor does not function
  • Front-end developers complain about the inability of building complex things, particularly single-page apps


  • Model
  • View
  • Update
  • Runtime

Development Tools

  • Atom
  • Vim
  • VSCode
  • Firacode
Scroll to Top