Zafu/Abstract/Monoid

Zafu/Abstract/Monoid

source code:

public dependencies: Zafu/Abstract/Eq, Zafu/Abstract/Semigroup

Index

Types

Monoid[a]

type Monoid[a: *]

Values

combine

references: Monoid

def combine[a](inst: Monoid[a], left: a, right: a) -> a

combine_all

references: List, Monoid

def combine_all[a](inst: Monoid[a], items: List[a]) -> a

combine_map_all

references: List, Monoid

def combine_map_all[a, b](inst: Monoid[a], items: List[b], fn: b -> a) -> a

combine_n

references: Int, Monoid

def combine_n[a](inst: Monoid[a], value: a, n: Int) -> a

empty

references: Monoid

def empty[a](inst: Monoid[a]) -> a

is_empty

references: Bool, Monoid, Zafu/Abstract/Eq::Eq

def is_empty[a](inst: Monoid[a], eq_inst: Zafu/Abstract/Eq::Eq[a], value: a) -> Bool

laws_Monoid

references: Monoid, Test, Zafu/Abstract/Eq::Eq

def laws_Monoid[a](inst: Monoid[a], eq_inst: Zafu/Abstract/Eq::Eq[a], x: a, y: a, z: a) -> Test

monoid_from_combine

Constructor from combine with helper operations derived via semigroup_from_combine.

references: Monoid

def monoid_from_combine[a](empty_value: a, combine_fn: (a, a) -> a) -> Monoid[a]

monoid_from_semigroup

Constructor that reuses an existing semigroup dictionary as-is.

references: Monoid, Zafu/Abstract/Semigroup::Semigroup

def monoid_from_semigroup[a
](empty_value: a, semigroup_inst: Zafu/Abstract/Semigroup::Semigroup[a]) -> Monoid[a]

monoid_specialized

Constructor for specialized implementations.

references: Int, List, Monoid

def monoid_specialized[a](
    empty_value: a,
    combine_fn: (a, a) -> a,
    combine_n_positive_fn: (a, Int) -> a,
    combine_map_all_fn: forall b: *. (b, List[b], b -> a) -> a
) -> Monoid[a]

monoid_to_semigroup

Projection keeps all semigroup specialization by returning the stored dictionary.

references: Monoid, Zafu/Abstract/Semigroup::Semigroup

def monoid_to_semigroup[a](inst: Monoid[a]) -> Zafu/Abstract/Semigroup::Semigroup[a]

reverse

references: Monoid

def reverse[a](inst: Monoid[a]) -> Monoid[a]