Trait Monoid

Source
pub trait Monoid: Semigroup {
    // Required method
    fn mempty() -> Self;
}
Expand description

Monoid type class extends the Semigroup and adds an empty function for the type

Required Methods§

Source

fn mempty() -> Self

empty function same as Default

§Examples
use funlib::{Monoid, Semigroup, Foldable::*};
let sum = vec![1i32,2i32,3i32,4i32].fold(i32::mempty(), |b,a| i32::mappend(&b, a));
assert_eq!(10i32, sum);
assert_eq!(None::<i32>, Option::<i32>::mempty());

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl Monoid for f32

Source§

fn mempty() -> Self

Source§

impl Monoid for f64

Source§

fn mempty() -> Self

Source§

impl Monoid for i8

Source§

fn mempty() -> Self

Source§

impl Monoid for i16

Source§

fn mempty() -> Self

Source§

impl Monoid for i32

Source§

fn mempty() -> Self

Source§

impl Monoid for i64

Source§

fn mempty() -> Self

Source§

impl Monoid for u8

Source§

fn mempty() -> Self

Source§

impl Monoid for u16

Source§

fn mempty() -> Self

Source§

impl Monoid for u32

Source§

fn mempty() -> Self

Source§

impl Monoid for u64

Source§

fn mempty() -> Self

Source§

impl<'a> Monoid for &'a str

Source§

fn mempty() -> Self

Source§

impl<A: Monoid> Monoid for Option<A>

Source§

fn mempty() -> Self

Source§

impl<A: Monoid> Monoid for Box<A>

Source§

fn mempty() -> Self

Implementors§