package monoid

import "github.com/IBM/fp-go/monoid"

Index

Functions

func ConcatAll

func ConcatAll[A any](m Monoid[A]) func([]A) A

ConcatAll concatenates all values using the monoid and the default empty value

func Fold

func Fold[A any](m Monoid[A]) func([]A) A

Fold concatenates all values using the monoid and the default empty value

func GenericConcatAll

func GenericConcatAll[GA ~[]A, A any](m Monoid[A]) func(GA) A

func ToSemigroup

func ToSemigroup[A any](m Monoid[A]) S.Semigroup[A]

Types

type Monoid

type Monoid[A any] interface {
	S.Semigroup[A]
	Empty() A
}

func AltMonoid

func AltMonoid[HKTA any, LAZYHKTA ~func() HKTA](
	fzero LAZYHKTA,
	falt func(HKTA, LAZYHKTA) HKTA,

) Monoid[HKTA]

func AlternativeMonoid

func AlternativeMonoid[A, HKTA, HKTFA any, LAZYHKTA ~func() HKTA](
	fof func(A) HKTA,

	fmap func(HKTA, func(A) func(A) A) HKTFA,
	fap func(HKTFA, HKTA) HKTA,

	falt func(HKTA, LAZYHKTA) HKTA,

	m Monoid[A],

) Monoid[HKTA]

func ApplicativeMonoid

func ApplicativeMonoid[A, HKTA, HKTFA any](
	fof func(A) HKTA,
	fmap func(HKTA, func(A) func(A) A) HKTFA,
	fap func(HKTFA, HKTA) HKTA,

	m Monoid[A],
) Monoid[HKTA]

func FunctionMonoid

func FunctionMonoid[A, B any](m Monoid[B]) Monoid[func(A) B]

FunctionMonoid forms a monoid as long as you can provide a monoid for the codomain.

func MakeMonoid

func MakeMonoid[A any](c func(A, A) A, e A) Monoid[A]

MakeMonoid creates a monoid given a concat function and an empty element

func Reverse

func Reverse[A any](m Monoid[A]) Monoid[A]

Reverse returns the dual of a `Monoid`, obtained by swapping the arguments of `Concat`.

Source Files

alt.go apply.go array.go function.go monoid.go

Directories

PathSynopsis
monoid/testing
Version
v1.0.151 (latest)
Published
Nov 23, 2024
Platform
linux/amd64
Imports
2 packages
Last checked
4 months ago

Tools for package owners.