Monoid<Endo<A>> endoMonoid<A>() => Monoid.instance<Endo<A>>(identity, (e1, e2) => (A a) => e1(e2(a)));