1
0
mirror of https://github.com/IBM/fp-go.git synced 2025-06-23 00:27:49 +02:00
Files
fp-go/semigroup/apply.go

24 lines
391 B
Go
Raw Normal View History

package semigroup
import (
F "github.com/IBM/fp-go/function"
)
/*
*
HKTA = HKT<A>
HKTFA = HKT<func(A)A>
*/
func ApplySemigroup[A, HKTA, HKTFA any](
_map func(HKTA, func(A) func(A) A) HKTFA,
_ap func(HKTFA, HKTA) HKTA,
s Semigroup[A],
) Semigroup[HKTA] {
cb := F.Curry2(s.Concat)
return MakeSemigroup(func(first HKTA, second HKTA) HKTA {
return _ap(_map(first, cb), second)
})
}