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 mclass 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.