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