Sum Type
Ein Typsystem-Feature: ein Typ, der genau eine von mehreren Alternativen sein kann, jede mit eigenen Feldern. Rusts enum, Haskells data, Swifts enum, TypeScripts Union, Javas Sealed Interface. Die moderne Alternative zu null und Klassenhierarchien.
Klassisches Beispiel: Result<T, E> = Ok(T) | Err(E). Option<T> = Some(T) | None — der Ersatz für null. „Tagged Union" und „Discriminated Union" sind Synonyme dafür. Sum Types erzwingen erschöpfendes Pattern Matching: Eine neue Variante zwingt zu Änderungen überall im Code, wo darauf geprüft wird — Refactoring, das der Compiler durchsetzt. Abzugrenzen von Product Types (ein Struct hält alle Felder gleichzeitig). Das OOP-Äquivalent sind Sealed Classes mit Visitor-Pattern. Fehlt in Go, in Python (typing.Union kommt nahe heran) und in Java vor Version 21. Designprinzip: „Make illegal states unrepresentable" (Yaron Minsky).