mirror of
https://github.com/IBM/fp-go.git
synced 2025-06-23 00:27:49 +02:00
20 lines
319 B
Go
20 lines
319 B
Go
![]() |
package monoid
|
||
|
|
||
|
import (
|
||
|
S "github.com/ibm/fp-go/semigroup"
|
||
|
)
|
||
|
|
||
|
func ApplicativeMonoid[A, HKTA, HKTFA any](
|
||
|
_of func(A) HKTA,
|
||
|
_map func(HKTA, func(A) func(A) A) HKTFA,
|
||
|
_ap func(HKTFA, HKTA) HKTA,
|
||
|
|
||
|
m Monoid[A],
|
||
|
) Monoid[HKTA] {
|
||
|
|
||
|
return MakeMonoid(
|
||
|
S.ApplySemigroup[A](_map, _ap, m).Concat,
|
||
|
_of(m.Empty()),
|
||
|
)
|
||
|
}
|