代数 - モノイド

モノイド \((X, e, \times)\)unit(), std::ops::Mul として定義したもの.

の定義とは別にしてるので注意.

/// Algebra - Monoid
trait Monoid: std::ops::Mul<Output=Self> + Clone + Copy {
    fn unit() -> Self;
}
impl Monoid for i64 { fn unit() -> Self { 0 }}
impl Monoid for f64 { fn unit() -> Self { 0.0 }}