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