This week, I've been learning Elm. While at the Recurse Center, I came across the book Seven Languages in Seven Weeks. The book's concept appealed to me. While I don't think it's possible to learn a programming language in a week, I think there's value in broadening your horizons with the quick study of a wide range of concepts.
This post summarises my initial thoughts about Elm, and lists some resources which may help you learn it.
Elm defines the Elm Architecture, a pattern that most applications should follow. This architecture splits code into three sections:
- Model - the state of an application
- Update - the way to update the state
- View - how the state is presented as HTML
- Fun to write. Elm aims to be a beginner friendly language. It's accessible, and seems to have a good community.
- Friendly compiler. I think Elm's compiler is the most helpful compiler I've used. It offers helpful debugging notes. It also writes in the first person!
- Community. Elm's community seems friendly. It's not huge, and there are fewer stack overflow questions etc than I'm used to.
- Single ecosystem. Elm is relatively self contained. It's easy to set the compiler up, without having to configure babel, react, redux, webpack etc.
- Architecture. Having a fixed architecture makes it easy to start developing in Elm. I think more languages should offer example architectures.
- Safety. Elm aims to be a safe language. It has a strict type system which if used well can catch a lot of bugs at compile time. It doesn't have a concept of null, and forces the user to account for procedures which may fail.
- Haskell introduction. Elm shares features with Haskell, but is simpler and carries less baggage. It may be a useful stepping stone to learning Haskell.
- Elm Guide. I'd recommend working through this to get an overview of how to install, setup and write Elm.
- Learn Elm in Y Minutes. A useful guide to Elm's syntax.
- elm-repl. Elm's repl is useful for quickly testing ideas out.
- elm-test. I found writing tests useful for confirming that functions behave as expected.
- Let's be mainstream. A talk by Evan Czaplicki, Elm's inventor, on some of the philosophy behind the language.