The `Norm` trait provides a `norm` function for types that represent a normed vector space – e.g. the absolute value of a float or the norm of a complex number.
The `Distance` trait provides a `distance` function to still calculate the distance between two values if no sensible norm can be defined.