Author: Chi-chi Wang
A high level investigation into the Elm Programming Language. This is meant to be a profile of the language itself more than an investigation of the syntax and operations.
Notes ported over from Google Docs, built between November 5, 2018 and November 6, 2018.
- Domain-specific programming language for creating web browser based user interfaces
- Purely functional
- Emphasis on
- Usability
- Performance
- Robustness
- Utilizes static type-checking
- Advertises “no runtime exceptions in practice”
- Initially designed by Evan Czaplicki as his thesis in 2012
- Evan Czaplicki joined Prezi in 2013 to work on Elm
- 2016: started the Elm Software Foundation
- First-class functions
- Supports partial application
- Immutable values
- Stateless functions
- Static typing (with type inference)
- Renders HTML through a virtual DOM
- Interoperates with other code by using “JavaScript as a service”
- Utilizes a module system
- Uses an abstraction called ports to communicate with JavaScript
- Allows values to flow in and out of Elm programs
- Utilizes a library elm-html that a programmer can use to write HTML and CSS within Elm
- Automatically enforced package semver
- Debug mode with built in time travel
- Has no support for higher-kinded types unlike Haskell or Purescript
- Client-side only
- Small community/ecosystem
- Hasn’t hit version 1.0