I\'ve read this article, but didn\'t understand last section.
The author says that Monad gives us context sensitivity, but it\'s possible to achieve the same result
With monads, subsequent effects can depend on previous values. For example, you can have:
main = do
b <- readLn :: IO Bool
if b
then fireMissiles
else return ()
You can't do that with Applicatives - the result value of one effectfull computation can't determine what effect will follow.
Somewhat related: