K
Size: a a a
K
KS
K
NT
DM
NT
OP
S
AG
AG
NT
KS
Oℕ
def semidirectProduct[A, B]?
(f: B => A => A)
(implicit A: Monoid[A], B: Monoid[B]): Monoid[(A, B)] =
new Monoid[(A, B)] {
override def empty = (A.empty, B.empty)
override def combine(x: (A, B), y: (A, B)) =
(x._1 |+| f(x._2)(y._1), x._2 |+| y._2)
}
NT
AA
K
AG
K