title: Difference between Monad and Applicative in Haskell
body: <p>I just read the following from <a href="http://www.haskell.org/haskellwiki/Typeclassopedia#Intuition_3">typeclassopedia</a> about the difference between <code>Monad</code> and <code>Applicative</code>. I can understand that there is no <code>join</code> in <code>Applicative</code>. But the following description looks vague to me and I couldn't figure out what exactly is meant by "the result" of a monadic computation/action. So, if I put a value into <code>Maybe</code>, which makes a monad, what is the result of this "computation"?</p>
  
  <blockquote>
    <p>Let’s look more closely at the type of (>>=). The basic intuition is
    that it combines two computations into one larger computation. The
    first argument, m a, is the first computation. However, it would be
    boring if the second argument were just an m b; then there would be no
    way for the computations to interact with one another (actually, this
    is exactly the situation with Applicative). So, the second argument to
    (>>=) has type a -> m b: a function of this type, given a result of
    the first computation, can produce a second computation to be run.
    ... Intuitively, it is this ability to use the output from previous
    computations to decide what computations to run next that makes Monad
    more powerful than Applicative. The structure of an Applicative
    computation is fixed, whereas the structure of a Monad computation can
    change based on intermediate results.</p>
  </blockquote>
  
  <p>Is there a concrete example illustrating "ability to use the output from previous computations to decide what computations to run next", which Applicative does not have?</p>