## Uses of Interface
com.jnape.palatable.lambda.functions.specialized.SemigroupFactory

- Packages that use SemigroupFactory
  Package | Description
  --- | ---
  com.jnape.palatable.lambda.functions.specialized |
  com.jnape.palatable.lambda.monoid.builtin |
  com.jnape.palatable.lambda.semigroup.builtin |

- - ### Uses of SemigroupFactory in com.jnape.palatable.lambda.functions.specialized

    Subinterfaces of SemigroupFactory in com.jnape.palatable.lambda.functions.specialized
    Modifier and Type | Interface and Description
    --- | ---
    `interface` | `MonoidFactory<A,B>`

    Methods in com.jnape.palatable.lambda.functions.specialized that return SemigroupFactory
    Modifier and Type | Method and Description
    --- | ---
    `default SemigroupFactory<B,C>` | BiSemigroupFactory.`apply(A a)`
    `default SemigroupFactory<? super Product2<? extends A,? extends B>,C>` | BiSemigroupFactory.`uncurry()`

  - ### Uses of SemigroupFactory in com.jnape.palatable.lambda.monoid.builtin

    Classes in com.jnape.palatable.lambda.monoid.builtin that implement SemigroupFactory
    Modifier and Type | Class and Description
    --- | ---
    `class` | `AddAll<A,C extends Collection<A>>` The `Monoid` instance formed under mutative concatenation for an arbitrary `Collection`.
    `class` | `Compose<A>` A `Monoid` instance formed by ``CompletableFuture`<A>` and a monoid over `A`.
    `class` | `EndoK<M extends MonadRec<?,M>,A,MA extends MonadRec<A,M>>` The monoid formed under monadic endomorphism.
    `class` | `LeftAll<L,R>` A `Monoid` instance formed by ``Either`<L,R>` and a monoid over `L`.
    `class` | `LeftAny<L,R>` A `Monoid` instance formed by ``Either`<L,R>` and a monoid over `L`.
    `class` | `Present<A>` A `Monoid` instance formed by ``Maybe`<A>` and a semigroup over `A`.
    `class` | `RightAll<L,R>` A `Monoid` instance formed by ``Either`<L,R>` and a monoid over `R`.
    `class` | `RightAny<L,R>` A `Monoid` instance formed by ``Either`<L,R>` and a monoid over `R`.
    `class` | `RunAll<A>` Run `IO` operations, aggregating their results in terms of the provided `Monoid`.

  - ### Uses of SemigroupFactory in com.jnape.palatable.lambda.semigroup.builtin

    Classes in com.jnape.palatable.lambda.semigroup.builtin that implement SemigroupFactory
    Modifier and Type | Class and Description
    --- | ---
    `class` | `Absent<A>` A `Semigroup` instance formed by ``Maybe`<A>` and a semigroup over `A`.
    `class` | `MaxBy<A,B extends Comparable<B>>` Given a mapping function from some type `A` to some `Comparable` type `B`, produce a `Semigroup` over `A` that chooses between two values `x` and `y` via the following rules: If `x` is strictly less than `y` in terms of `B`, return `y` Otherwise, return `x`
    `class` | `MinBy<A,B extends Comparable<B>>` Given a mapping function from some type `A` to some `Comparable` type `B`, produce a `Semigroup` over `A` that chooses between two values `x` and `y` via the following rules: If `x` is strictly greater than `y` in terms of `B`, return `y` Otherwise, return `x`

    Methods in com.jnape.palatable.lambda.semigroup.builtin that return SemigroupFactory
    Modifier and Type | Method and Description
    --- | ---
    `static <_1,_2> SemigroupFactory<Semigroup<_2>,Tuple2<_1,_2>>` | Collapse.`collapse(Semigroup<_1> _1Semigroup)`
    `static <L,R> SemigroupFactory<Semigroup<R>,Either<L,R>>` | Merge.`merge(Semigroup<L> lSemigroup)`