Trait Module
algebra
pub trait Module<A>: Semigroup { fn scale(self, a: A) -> Self; }
fn scale(self, a: A) -> Self