Sum type
Type-system feature: a type that can be one-of-several alternatives, each with own fields. Rust enum, Haskell data, Swift enum, TypeScript union, Java sealed interface. Modern alternative to null + class hierarchies.
Classic example: Result<T, E> = Ok(T) | Err(E). Option<T> = Some(T) | None — null replacement. Tagged union (discriminated union) is synonymous. Sum types force exhaustive matching: adding a new variant forces code update everywhere → compiler-driven refactoring. Distinct from product types (struct = all fields at the same time). Modern OOP equivalent: sealed classes + visitor pattern. Missing: Go, Python (typing.Union is close), Java pre-21. Design principle: "Make illegal states unrepresentable" (Yaron Minsky).