title: Why can't I force an IO action with seq?
body: <p>Given this code snippet:</p>
  
  <pre><code>someFunction x = print x `seq` 1
  
  main = do print (someFunction "test")
  </code></pre>
  
  <p>why doesn't the <code>print x</code> print <code>test</code> when the code is executed? </p>
  
  <pre><code>$./seq_test 
  1
  </code></pre>
  
  <p>If I replace it with <code>error</code> I can check that the left operand of <code>seq</code> <em>is</em> indeed evaluated.</p>
  
  <p>How could I achieve my expected output:</p>
  
  <pre><code>test
  1
  </code></pre>
  
  <p>modifying only <code>someFunction</code>?</p>