Proposal, add a functional dependence to LeftModule and RightModule
This started with problems I was having with the "instance (Additive m) => LeftModule () m" instance. Since what I'm trying to create is coordinate systems, I'd like to be able to say "instance (Semiring a) => LeftModule a (ThreeD a)" and "instance (Semiring a) => LeftModule a (Polar2D a)" and so on and so forth.
Whilst both the ThreeD and Polar2D instances make sense, they're obvious horribly incompatible with both each other and the existing "() m" instance. This would be resolved by making the Semiring type a functional dependency of the module type. What I don't know is what's likely to be broken by a change like this. Are there many cases where people are treating a type as a module over multiple rings at once?