# Restrict type of monadic binding

### From HaskellWiki

*This page addresses an aspect of Haskell style, which is to some extent a matter of taste. Just pick what you find appropriate for you and ignore the rest.*

According to Do notation considered harmful#Safety the type of the monadic binding combinator (>>) should be restricted to

(>>) :: m () -> m a -> m a

_ <-

()

Types of some other monadic operations should be restricted, too.

mapM_ :: Monad m => (a -> m ()) -> [a] -> m () replicateM_ :: Monad m => Int -> m () -> m () sequence_ :: Monad m => [m ()] -> m () zipWithM_ :: Monad m => (a -> b -> m ()) -> [a] -> [b] -> m ()