title: Haskell. Why it is working? (Iteration over Monad)
body: <pre><code>liftMM :: Monad m =&gt; (a -&gt; b) -&gt; m a -&gt; m b
  liftMM f m = m &gt;&gt;= \a -&gt; return (f a)
  </code></pre>
  
  <p>I run:</p>
  
  <pre><code>&gt; liftMM (*2) [1..10]
  </code></pre>
  
  <p>I got output:</p>
  
  <pre><code>&gt; [2,4,6,8,10,12,14,16,18,20]
  </code></pre>
  
  <p>I can not see how this function is mapping over all list's values? There is no any recursion or iteration, just one pass monad internal m value to the function f. What I am missing here?</p>