title: How does Monad conform to the composition of function
body: <p>I know the functions are all about composition. For example, if I have an arrow from A to B and an arrow from B to C, composition means I also have an arrow from A to C.</p>
  
  <p>But for <code>(&gt;&gt;=)</code>, its type is <code>Monad m =&gt; m a -&gt; (a -&gt; m b) -&gt; m b</code>. Why <code>m a</code> is equal to <code>a</code> here?</p>
  
  <p>I was wondering why not <code>Monad m =&gt; m a -&gt; (m a -&gt; m b) -&gt; m b</code>? Does this make more sense? </p>