Category theory traits for Rust, and helper structs for operations on them.
fn min<T>(values: Vec<T>) -> T {
let Min(res) = Monoid::concat(values.into_iter().map(Min));
res
}
- Semigroup
- Monoid
- Functor (this and following need GATs)
- Applicative
- Alternative
- Monad
- Traversable