@hackage attenuation0.2.0

Subtyping relations and variance roles

This lets you coerce containers (among other things) from stronger types to weaker types with zero runtime cost when it's safe to do so, e.g. [Fin n] -> [Int]. This primarily comes into play when using newtypes to impose additional invariants on existing types.