The linear package offers efficient
vector types — where vector means *element of a free vector space*, i.e.
fixed-length arrays of numbers. The entire interface of that library is based on
this concept of free vectors with a canonical coordinate representation.

While this is practically speaking often useful, it is also

Questionable in terms of conceptual elegance. The idea of a vector has
originally not much to do with number-arrays; in physics a vector is just
a quantity with *magnitude and direction*. Only by fixing a basis can
a coordinate representation arise from that.

Not as safe as we'd like. The typical linear-algebra languages like Matlab
or Fortran are notorious for hard-to spot mistakes that often arise from the
total reliance on coordinate representations (every vector/linear map is just
a matrix of number). `linear`

already avoids most of these problems because
it can at least check dimensions at compile-time and usually doesn't need
any indices, but some trouble still remains. E.g., two different 3-dimensional
spaces are indistinguishable by the type system (unless you wrap one of them
in a `newtype`

, however that also needs to be parameterised on the coordinate
type to work with the rest of the library).

The vector-space library
has arguably a better (albeit less complete) interface. To gain access to
that interface with the more efficient types from `linear`

, we here provide
the necessary orphan instances.