`type Extension s = s -&gt; Endo Result` is already good enough IMO, since it&#x27;s `Monoid` and we can also contramap thanks to `Profunctor (-&gt;)`. We don&#x27;t have to bring in `ApAp`, which is anyway called `Compose` in `Data.Functor.Compose`.