Reusable typed code.
WHAT GENERICS PROVIDE
Code working with any type, while remaining checked.
WHAT CONSTRAINTS DO
Limit which types are permitted, so operations on them are valid.
WHAT THAT LOOKS LIKE
Requiring a type to conform to a protocol.
WHAT OPAQUE RETURN TYPES PROVIDE
Returning a specific concrete type without naming it.
WHY THAT MATTERS
The caller gets full type information with no runtime cost, while the implementation stays private.
WHERE YOU SEE IT CONSTANTLY
Interface code, where view types are complex and unnamed.
WHAT EXISTENTIAL TYPES PROVIDE
Holding any conforming type, decided at runtime.
WHAT THEY COST
Runtime indirection.
WHAT PROPERTY WRAPPERS DO
Encapsulate behaviour around a stored value.
WHERE THEY APPEAR
Throughout interface frameworks, declaring how a value is stored and observed.
WHAT RESULT BUILDERS DO
Transform a sequence of expressions into a single value.
WHY THAT MATTERS
They are what makes declarative interface syntax possible.
WHAT TO AVOID
Generic code so abstract nobody can read it Constraints producing unintelligible error messages
WHAT TO PREFER
The simplest signature that works.