[Haskell-cafe] Fwd: Semigroup and Monoid instances for ReaderT

Louis Pan louis.pan at gmail.com
Wed Mar 22 23:34:55 UTC 2017


Ah, good point. I didn't think that there would be other instances. I'll
close the darcs request.


On Thu, 23 Mar 2017 at 6:58 am, David Menendez <dave at zednenem.com> wrote:

> On Tue, Mar 21, 2017 at 3:53 AM, Louis Pan <louis at pan.me> wrote:
>
> Hi all,
>
> In my Glazier GUI library, I had to use newtype wrappers to create
> Semigroup and Monoid instances for ReaderT.
>
> Is there a reason why ReaderT doesn't have an instance of Semigroup and
> Monoid?
>
>
> There are at least three reasonable instances of Semigroup and Monoid for
> ReaderT.
>
> instance (Applicative m, Monoid a) => Monoid (ReaderT r m a) where
>     mempty = pure mempty
>     mappend a b = mappend <$> a <*> b
>
> instance (Alternative m) => Monoid (ReaderT r m a) where
>     mempty = empty
>     mappend = (<|>)
>
> instance (Monoid (m a)) => Monoid (ReaderT r m a) where
>     mempty = ReaderT $ mempty
>     mappend a b = ReaderT $ mappend a b
>
>
> In the absence of a principled reason to prefer one over the others and a
> general consensus, I think it’s better not to choose.
>
> --
> Dave Menendez <dave at zednenem.com>
> <http://www.eyrie.org/~zednenem/>
>
>
>
>
> _______________________________________________
>
> 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.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20170323/7e169dca/attachment.html>


More information about the Haskell-Cafe mailing list