pub struct Groupoid<'a, T> { /* private fields */ }Expand description
A set equipped with an associative binary operation.
Groupoid is a representation of the abstract algebraic groupoid.
Associativity is all that is required of its binary operation: its
construction involves a set (specifically an AlgaeSet) and an
associative BinaryOperation.
Examples
use algae_rs::algaeset::AlgaeSet;
use algae_rs::mapping::{BinaryOperation, AssociativeOperation};
use algae_rs::magma::{Magmoid, Groupoid};
let mut add = AssociativeOperation::new(&|a, b| a + b);
let mut groupoid = Groupoid::new(
AlgaeSet::<i32>::all(),
&mut add
);
let groupoid_sum = groupoid.with(1, 2);
assert!(groupoid_sum.is_ok());
assert!(groupoid_sum.unwrap() == 3);
let mut div = AssociativeOperation::new(&|a, b| a / b);
let mut bad_groupoid = Groupoid::new(
AlgaeSet::<f32>::all(),
&mut div,
);
let ok_dividend = bad_groupoid.with(1.0, 2.0);
assert!(ok_dividend.is_ok());
assert!(ok_dividend.unwrap() == 0.5);
let err_dividend = bad_groupoid.with(3.0, 6.0);
assert!(err_dividend.is_err());