Sum type
Type-system-feature: en typ som kan vara ett-av-flera-alternativ, varje med egna fields. Rust enum, Haskell data, Swift enum, TypeScript union, Java sealed interface. Modern alternativ till null + class-hierarchies.
Klassiskt exempel: Result<T, E> = Ok(T) | Err(E). Option<T> = Some(T) | None — null-ersättning. Tagged union (discriminated union) är synonymt. Sum types tvingar exhaustive-matching: lägga till ny variant tvingar code-update överallt → compiler-driven refactoring. Skiljs från product types (struct = alla fields samtidigt). Modern OOP-ekvivalent: sealed classes + visitor pattern. Saknas: Go, Python (typing.Union är close), Java pre-21. Designprincip: "Make illegal states unrepresentable" (Yaron Minsky).