Now this still requires me to find a choice of basis for each vector space, but it just so happens that lenses can provide a canonical choice of such a basis. And the nice thing is I can use typeclasses to share such lenses between different vector spaces. By giving names to the ‘x’ dimension or ‘y’ dimension. I can share those names across 2d and 3d vectors for convenience. I’d originally planned
![An Interview With Haskell Developer Edward Kmett](https://cdn-ak-scissors.b.st-hatena.com/image/square/183a0db6c67225f552f2b4f1a76dac20af67f9cd/height=288;version=1;width=512/https%3A%2F%2Ftheinitialcommit.com%2Fimg%2Fog.png)