diff --git a/record/generic/semigroup.go b/record/generic/semigroup.go index 8faaa8d..f1de1e7 100644 --- a/record/generic/semigroup.go +++ b/record/generic/semigroup.go @@ -21,18 +21,18 @@ import ( func UnionSemigroup[N ~map[K]V, K comparable, V any](s S.Semigroup[V]) S.Semigroup[N] { return S.MakeSemigroup(func(first N, second N) N { - return union(s, first, second) + return union[N, K, V](S.ToMagma(s), first, second) }) } func UnionLastSemigroup[N ~map[K]V, K comparable, V any]() S.Semigroup[N] { return S.MakeSemigroup(func(first N, second N) N { - return unionLast(first, second) + return unionLast[N, K, V](first, second) }) } func UnionFirstSemigroup[N ~map[K]V, K comparable, V any]() S.Semigroup[N] { return S.MakeSemigroup(func(first N, second N) N { - return unionLast(second, first) + return unionLast[N, K, V](second, first) }) } diff --git a/semigroup/semigroup.go b/semigroup/semigroup.go index 3eb8d76..298035c 100644 --- a/semigroup/semigroup.go +++ b/semigroup/semigroup.go @@ -59,3 +59,8 @@ func First[A any]() Semigroup[A] { func Last[A any]() Semigroup[A] { return MakeSemigroup(F.Second[A, A]) } + +// ToMagma converts a semigroup to a magma +func ToMagma[A any](s Semigroup[A]) M.Magma[A] { + return s +}