You need Monoid to write the monad instance for Writer. What would pure
look like without the Monoid identity?

However, you only need Semigroup to use flatMap (the Bind typeclass).
The Writer instance for Bind should only require Semigroup.


On 27/09/17 20:30, Przemysław Pokrywka wrote:
> Hello,
>
> I've set up some monad transformer stack involving WriterT, using some
> custom data type as the Writer "log".
> I've provided a Semigroup instance for that "log" data type.
> When I try to call flatMap, the compiler tells me, that there's no
> implicit Monad instance for my stack type.
> The issue disappears when I provide a Monoid for my custom "log" type
> (instead of the Semigroup).
> I think this is related to the following code fragment:
> https://github.com/scalaz/scalaz/blob/5d6fbf7d4d567cb736a4cc2d46fc9edc071cc5cf/core/src/main/scala/scalaz/WriterT.scala#L192
> and I started to wonder, why is the Monoid instance required -
> wouldn't just Semigroup be sufficient?
>
> Regards,
> Przemek
>
> -- 
> You received this message because you are subscribed to the Google
> Groups "scalaz" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to [email protected]
> <mailto:[email protected]>.
> To post to this group, send email to [email protected]
> <mailto:[email protected]>.
> Visit this group at https://groups.google.com/group/scalaz.
> For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
"scalaz" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/scalaz.
For more options, visit https://groups.google.com/d/optout.

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to