[Haskell-cafe] Why do I have to specify (Monad m) here again?

Bulat Ziganshin bulat.ziganshin at gmail.com
Sun Feb 18 10:59:32 EST 2007


Hello Marc,

Sunday, February 18, 2007, 7:32:54 PM, you wrote:

> When using your example (Monad IO):
>         class (Monad m) => MonadIO m where
>                 liftIO :: IO a -> m a
> it it basically the same, isn't it?  This declaration forces m to be monad..
> which would't hurt if GHC would infer m beeing a monad automatically?

it is more explicit. for example, this simplifies understanding of
error messages generated by compiler. and, if you change 'class'
declaration, this will not silently change meaning of 'instance' declaration


-- 
Best regards,
 Bulat                            mailto:Bulat.Ziganshin at gmail.com



More information about the Haskell-Cafe mailing list