ddd
- Existential types
- structural types
- nested types
- path-dependant types
- abstract and concrete type members
- type bounds (upper, lower, view, context)
- use-site and declaration-site type variance
- support for type polymorphism (subtype, parametric, F-bounded, ad-hoc)
- higher-kinded types
- generalized type constraints
- And the list goes on.