Advanced Type Mechanics

Part I — about types — subtyping — least upper bounds — kinds — composition of types — singleton and literal types — intersections and unions — existentials and universals — type paths — type refinements — unsoundnessPart II — type diagrams — covariance and invariance — reasoning about subtyping — contravariance — type bounds — higher-kinds — subkinding — higher-order unificationPart III — implicit resolution — type precision and widening — dependent method types — stability — implicit prioritization — pattern-matching types — type-level computations — type-level data structuresPart IV — type parameters and members — expected types — type inference — API design — overload resolution — common type-level patterns — type functions — a type-level toolbox — types in Dotty