title: Forced strictness for lists in haskell
body: <p>I made really time consuming algorithm which produces a short string as the result. When I try to print it (via putStrLn) it appears on the screen character by character. I did understand why that happened, and I tried to force evaluation of the string before actual printing.</p>
  
  <pre><code>myPrint !str = putStrLn str
  </code></pre>
  
  <p>But this help very little. When I ran the program in debug I noticed that the !str forced evaluation only for the first character.</p>
  
  <p>Does anyone know why is that, and how to deal with this?</p>