title: What is a Combinator in Haskell
body: <p>In <a href="http://book.realworldhaskell.org/read/" rel="nofollow noreferrer">Real World Haskell</a>, they describe combinators like this:</p>
  
  <blockquote>
    <p>In Haskell, we refer to functions that take other functions as arguments and return new functions as combinators.</p>
  </blockquote>
  
  <p>And then later they state that <code>maybeIO</code> function is a combinator and its type signature looks like this:</p>
  
  <pre><code>maybeIO :: IO a -&gt; IO (Maybe a)
  </code></pre>
  
  <p>But all I can see is that <code>maybeIO</code> is a function that takes a value wrapped in IO monad and returns a value in IO monad. Then how does this function become a combinator ?</p>