Algebraic data types and pattern matching: Programming Language Design course | Zoonk