title: What is the difference between forM and forM_ in haskell?
body: <p>HLint suggests that I use <code>forM_</code> rather than <code>forM</code>. Why? I see they have different type signatures but haven't found a good reason to use one over the other.</p>
  
  <pre><code>forM  :: (Traversable t, Monad m) =&gt; t a -&gt; (a -&gt; m b) -&gt; m (t b)
  forM_ :: (Foldable t,    Monad m) =&gt; t a -&gt; (a -&gt; m b) -&gt; m ()
  </code></pre>