Types in Elm: Decomposition and Ad Hoc Polymorphism
sonnym.github.io