<div dir="ltr"><div dir="ltr"><div>This is another part of <a href="https://gitlab.haskell.org/ghc/ghc/merge_requests/644">https://gitlab.haskell.org/ghc/ghc/merge_requests/644</a>, which is presumably much less controversial:<br class="gmail-Apple-interchange-newline"><br></div><div>Generic (Kleisli m a b)</div><div><code><span class="gmail-kt">Functor</span> <span class="gmail-n">m</span> <span class="gmail-o">=></span> <span class="gmail-kt">Functor</span> <span class="gmail-p">(</span><span class="gmail-kt">Kleisli</span> <span class="gmail-n">m</span> <span class="gmail-n">a</span><span class="gmail-p">)</span></code><br></div><div><code><span class="gmail-p"><code><span class="gmail-kt">Applicative</span> <span class="gmail-n">m</span> <span class="gmail-o">=></span> <span class="gmail-kt">Applicative</span> <span class="gmail-p">(</span><span class="gmail-kt">Kleisli</span> <span class="gmail-n">m</span> <span class="gmail-n">a</span><span class="gmail-p">)</span></code><br></span></code></div><div><code><span class="gmail-p"><code><span class="gmail-p"><code><span class="gmail-kt">Alternative</span> <span class="gmail-n">m</span> <span class="gmail-o">=></span> <span class="gmail-kt">Alternative</span> <span class="gmail-p">(</span><span class="gmail-kt">Kleisli</span> <span class="gmail-n">m</span> <span class="gmail-n">a</span><span class="gmail-p">)</span></code><br></span></code></span></code></div><div><code><span class="gmail-p"><code><span class="gmail-p"><code><span class="gmail-p"><code><span class="gmail-kt">Monad</span> <span class="gmail-n">m</span> <span class="gmail-o">=></span> <span class="gmail-kt">Monad</span> <span class="gmail-p">(</span><span class="gmail-kt">Kleisli</span> <span class="gmail-n">m</span> <span class="gmail-n">a</span><span class="gmail-p">)</span></code><br></span></code></span></code></span></code></div><div><code><span class="gmail-p"><code><span class="gmail-p"><code><span class="gmail-p"><code><span class="gmail-p"><code><span class="gmail-p">(</span><span class="gmail-kt">Alternative</span> <span class="gmail-n">m</span><span class="gmail-p">,</span> <span class="gmail-kt">Monad</span> <span class="gmail-n">m</span><span class="gmail-p">)</span> <span class="gmail-o">=></span> <span class="gmail-kt">MonadPlus</span> <span class="gmail-p">(</span><span class="gmail-kt">Kleisli</span> <span class="gmail-n">m</span> <span class="gmail-n">a</span><span class="gmail-p">)</span></code></span></code></span></code></span></code></span></code></div></div></div>