title: What does a pipe in a class definition mean?
body: <pre><code>class (Monoid w, Monad m) =&gt; MonadWriter w m | m -&gt; w where 
     pass   :: m (a,w -&gt; w) -&gt; m a 
     listen :: m a -&gt; m (a,w) 
     tell   :: w -&gt; m () 
  </code></pre>
  
  <p>What is the meaning of the pipe above? The snippet comes from <a href="http://www.haskell.org/all_about_monads/html/writermonad.html" rel="noreferrer">here</a>.</p>