If you have an associative (+), then you can use
(.*) to multiply by a whole number, I
currently do fold a method into the Additive class to
'fake' a LeftModule, but you have to explicitly use it.
class
Additive m => LeftModule r m
class LeftModule Whole m => Additive m
This
says that if you have an Additive semigroup, then there
exists a LeftModule over the whole numbers, and that every
leftmodule is additive, but there can exist other
LeftModules than just ones over the whole numbers!
Given
LeftModule Integer m, you'd know you have Additive
m and LeftModule Whole m.
LeftModule
Integer m => LeftModule Whole m <=> Additive m.