A way to bundle a bunch of types into a single type parameter. For example, in a matrix library I'm developing, I define trait Scalar { type A; type B; type C; ... } and then pass it as a single parameter to my matrix trait, trait Matrix[S <: Scalar] ... The individual types can be referred to as S#A, S#B, and so on. Between two matrices of type Matrix[S], for the same S, these types will be compatible (unlike what would be the case with path dependent types).