title: Why does printfn print immediately in f#?
body: <p>When I run the following bit of code, I get 5050 printed out from mySum. I've defined mySum, but never invoked it. How can it print at all? Maybe this is weird because my background is Haskell and I'm used to passing the IO monad around to get things to do stuff - how/when are things evaluated in F#?</p>
  
  <pre><code>type main = obj [] -&gt; int
  
  let mySum =  [1..100] |&gt; List.sum |&gt; printfn "%i"
  
  
  [&lt;EntryPoint&gt;]
  let main argv = 
      0
  </code></pre>