pub struct Monoid<'a, T> { /* private fields */ }Expand description
A set equipped with an associative binary operation with identity.
Monoid is a representation of the abstract algebraic monoid.
Associativity and identity are required of its binary operation. Its
construction involves a set (specifically an AlgaeSet and a
BinaryOperation with the aforementioned properties.
Examples
use algae_rs::algaeset::AlgaeSet;
use algae_rs::mapping::{BinaryOperation, MonoidOperation};
use algae_rs::magma::{Magmoid, Monoid};
let mut add = MonoidOperation::new(&|a, b| a + b, 0);
let mut monoid = Monoid::new(
AlgaeSet::<i32>::all(),
&mut add,
0
);
let monoid_sum = monoid.with(1, 2);
assert!(monoid_sum.is_ok());
assert!(monoid_sum.unwrap() == 3);
let mut bad_add = MonoidOperation::new(&|a, b| a + b, 1);
let mut bad_monoid = Monoid::new(
AlgaeSet::<i32>::all(),
&mut bad_add,
1
);
let bad_monoid_sum = bad_monoid.with(1, 2);
assert!(bad_monoid_sum.is_err());