[Haskell-cafe] Seeking help to generalize this ..

Debasish Ghosh ghosh.debasish at gmail.com
Mon Feb 3 06:27:46 UTC 2020


Thanks for all the suggestions ..

On Sun, Feb 2, 2020 at 4:20 AM Juan Casanova <juan.casanova at ed.ac.uk> wrote:

> > Related:
> >
> > In Data.Monoid there is the 'Endo' newtype, which wraps functions of
> > type 'a -> a'. Is there an 'EndoM' variant, or is that something that's
> > usually created by putting other pieces together? Below is a sketch of
> > what I mean:
> >
> > -- Maybe this is known by another name?
> > newtype EndoM f a = EndoM { appEndoM :: a -> f a }
> >
> > -- Bind typeclass is from package semigroupoids.
> > -- It means "Monad sans 'return'".
> > -- Maybe use Monad f => here instead if getting the Bind instances is
> > -- too annoying? (e.g., Writing orphan instances).
> > instance Bind f => Semigroup (EndoM f a) where
> >   EndoM f <> EndoM g = EndoM $ f ->- g
> >
> > -- Bind is not a superclass of Monad, so we get this awkward set of
> > -- required constraints here.
> > instance (Bind f, Monad f) => Monoid (EndoM f a) where
> >   mempty = EndoM pure
> >
> > -- Jack
> >
>
> Not undervaluing this post, but to be clear to the OP, all of that
> really isn't adding any capabilities, just reifying the ones that
> others exposed. (You can use foldMap instead of foldr). This could be
> useful if you want to do higher-level stuff with it later on, but for
> the purposes of the original post I think it really is overkill, isn't
> it?
>
> --
> The University of Edinburgh is a charitable body, registered in
> Scotland, with registration number SC005336.
>
>
> _______________________________________________
> Haskell-Cafe mailing list
> To (un)subscribe, modify options or view archives go to:
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
> Only members subscribed via the mailman list are allowed to post.



-- 
Debasish Ghosh
http://manning.com/ghosh2
http://manning.com/ghosh

Twttr: @debasishg
Blog: http://debasishg.blogspot.com
Code: http://github.com/debasishg
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20200203/0c216e49/attachment.html>


More information about the Haskell-Cafe mailing list