Zafu/Abstract/Monoidsource code:
public dependencies: Zafu/Abstract/Eq, Zafu/Abstract/Semigroup
Monoidcombine, combine_all, combine_map_all, combine_n, empty, is_empty, laws_Monoid, monoid_from_combine,
monoid_from_semigroup,
monoid_specialized,
monoid_to_semigroup,
reverseMonoid[a]type Monoid[a: *]
combinereferences: Monoid
def combine[a](inst: Monoid[a], left: a, right: a) -> a
combine_alldef combine_all[a](inst: Monoid[a], items: List[a]) -> a
combine_map_alldef combine_map_all[a, b](inst: Monoid[a], items: List[b], fn: b -> a) -> a
combine_ndef combine_n[a](inst: Monoid[a], value: a, n: Int) -> a
emptyreferences: Monoid
def empty[a](inst: Monoid[a]) -> a
is_emptyreferences: Bool, Monoid, Zafu/Abstract/Eq::Eq
def is_empty[a](inst: Monoid[a], eq_inst: Zafu/Abstract/Eq::Eq[a], value: a) -> Bool
laws_Monoidreferences: 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_combineConstructor 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_semigroupConstructor 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_specializedConstructor for specialized implementations.
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_semigroupProjection 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]
reversereferences: Monoid
def reverse[a](inst: Monoid[a]) -> Monoid[a]