
2012/1/16 Jurriën Stutterheim
It is indeed intended for monads that have no Functor instance. While one could argue that every monad should have a Functor instance, this is not the case in practice. If, on the other hand, Monad was defined as
class Functor m => Monad m
then all would be fine and we would be able to use the current implementation for `void`. A Functor constraint on Monad is an entirely different discussion though.
We would be better off adding Functor instances for the Monads in question. Then readers wouldn't have to wonder about the difference between coid and voidM and why one was chosen over the other in a particular context &c. Antoine
Jurriën
On 16 Jan 2012, at 16:22, Erik Hesselink wrote:
2012/1/16 Simon Hengel
: voidM :: Monad m => m a -> m () voidM m = m >> return ()
Is voidM meant to be used with instance of Monad that are no monads, and hence have no Functor instance (like HtmlM[1])?
You could easily implement a Functor instance for this type, since it would mirror the instance for `Const a` [2], i.e. only change the type parameter, and otherwise be the identity function.
Erik
[1] http://hackage.haskell.org/packages/archive/blaze-html/0.4.3.1/doc/html/Text... [2] http://hackage.haskell.org/packages/archive/base/latest/doc/html/Control-App...
_______________________________________________ Libraries mailing list Libraries@haskell.org http://www.haskell.org/mailman/listinfo/libraries