title: What's the "|" for in a Haskell class definition?
body: <p>I can't figure out what the "| m -> w"-part means in a class definition like this:</p>
  
  <pre><code>class (Monoid w, Monad m) =&gt; MonadWriter w m | m -&gt; w
  </code></pre>
  
  <p>What additional information does this add to the class definition?</p>