title: Function composition hint
body: <p>just looking for an explanation how does following composition work:</p>
  
  <pre><code>(=&lt;&lt;) . return
  </code></pre>
  
  <p>where</p>
  
  <pre><code>(=&lt;&lt;) ::       (a -&gt; m b) -&gt; m a -&gt; m b
  return :: a -&gt; m a
  (.) :: (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
  </code></pre>
  
  <p>The final type:</p>
  
  <pre><code>GHCi&gt; :t (=&lt;&lt;) . return
  (=&lt;&lt;) . return :: Monad m =&gt; m b -&gt; m a -&gt; m b
  </code></pre>
  
  <p>I cann't grasp how can match <em>m a</em> with <em>(a -> m b)</em> , ie. how can apply result of <em>return</em> which is a simple type to first argument of <em>(=&lt;&lt;)</em> expecting a function type ?</p>