Generics
Parametric polymorphism — funktioner/typer parametriserade över typer. Vec<T> fungerar för T = String, T = i32, T = vad-som-helst. Standard sedan ML 1973; mainstream sedan Java 5 (2004), C++ templates (sen 1990s), Rust, Go 1.18 (2022).
Två implementations: monomorphization (compile-time, en kopia per concrete-type — Rust, C++, Go), erasure (one runtime-version, type-info-erased — Java, TypeScript). Trade-offs: monomorphization → snabbare runtime, större binary. Erasure → smaller binary, less optimization potential. Bounded generics: fn sort<T: Ord> — kräver T implementerar Ord-trait. Higher-kinded types (HKT): generics-over-generics, finns i Haskell, Scala — saknas i Rust/Go. Modern Go (1.18+) lade till generics efter 13 års motstånd från Go-team.