Algebraic Data Types are a simple yet surprisingly powerful concept, and one that all developers should be comfortable with.
This talk intends to motivate them, explain some of the theory behind them, and tackle their generalised form, GADTs.