<div dir="ltr">Thanks for all the suggestions .. </div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Feb 2, 2020 at 4:20 AM Juan Casanova <<a href="mailto:juan.casanova@ed.ac.uk">juan.casanova@ed.ac.uk</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">> Related:<br>
><br>
> In Data.Monoid there is the 'Endo' newtype, which wraps functions of<br>
> type 'a -> a'. Is there an 'EndoM' variant, or is that something that's<br>
> usually created by putting other pieces together? Below is a sketch of<br>
> what I mean:<br>
><br>
> -- Maybe this is known by another name?<br>
> newtype EndoM f a = EndoM { appEndoM :: a -> f a }<br>
><br>
> -- Bind typeclass is from package semigroupoids.<br>
> -- It means "Monad sans 'return'".<br>
> -- Maybe use Monad f => here instead if getting the Bind instances is<br>
> -- too annoying? (e.g., Writing orphan instances).<br>
> instance Bind f => Semigroup (EndoM f a) where<br>
>   EndoM f <> EndoM g = EndoM $ f ->- g<br>
><br>
> -- Bind is not a superclass of Monad, so we get this awkward set of<br>
> -- required constraints here.<br>
> instance (Bind f, Monad f) => Monoid (EndoM f a) where<br>
>   mempty = EndoM pure<br>
><br>
> -- Jack<br>
><br>
<br>
Not undervaluing this post, but to be clear to the OP, all of that  <br>
really isn't adding any capabilities, just reifying the ones that  <br>
others exposed. (You can use foldMap instead of foldr). This could be  <br>
useful if you want to do higher-level stuff with it later on, but for  <br>
the purposes of the original post I think it really is overkill, isn't  <br>
it?<br>
<br>
-- <br>
The University of Edinburgh is a charitable body, registered in<br>
Scotland, with registration number SC005336.<br>
<br>
<br>
_______________________________________________<br>
Haskell-Cafe mailing list<br>
To (un)subscribe, modify options or view archives go to:<br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a><br>
Only members subscribed via the mailman list are allowed to post.</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div>Debasish Ghosh<br><a href="http://manning.com/ghosh2" target="_blank">http://manning.com/ghosh2</a></div><div><a href="http://manning.com/ghosh" target="_blank">http://manning.com/ghosh</a><br></div><div><br>Twttr: @debasishg<br>Blog: <a href="http://debasishg.blogspot.com" target="_blank">http://debasishg.blogspot.com</a><br>Code: <a href="http://github.com/debasishg" target="_blank">http://github.com/debasishg</a></div></div></div>