title: I/O in Haskell is Functional?
body: <p>I'm <em>just starting</em> to take a look at Haskell (my previous FP experience is in Scheme), and I <a href="http://www.haskell.org/haskellwiki/Learn_Haskell_in_10_minutes#The_console" rel="noreferrer">came across this code</a>:</p>
  
  <pre><code>do { putStrLn "ABCDE" ; putStrLn "12345" }
  </code></pre>
  
  <p>To me, this is procedural programming, if anything -- especially because of the consecutive nature of side effects.</p>
  
  <p>Would someone please explain how this code is "functional" in any respect?</p>