title: F# Lazy Evaluation vs Non-Lazy
body: <p>I'm just beginning F# so please be kind if this is basic.</p>
  
  <p>I've read that a function marked lazy is evaluated only once and then cached. For example:</p>
  
  <pre><code>let lazyFunc = lazy (1 + 1)
  let theValue = Lazy.force lazyFunc
  </code></pre>
  
  <p>Compared to this version which would actually run each time it's called:</p>
  
  <pre><code>let eagerFunc = (1 + 1)
  let theValue = eagerFunc
  </code></pre>
  
  <p>Based on that, should <strong>all</strong> functions be made lazy? When would you not want to? This is coming from material in the book <em>"Beginning F#"</em>.</p>