title: F# - Type augmentation VS Type extension
body: <p>What exactly is the difference between F#'s type augmentation and type extension, and do we really need both?</p>
  
  <p>Are there situations where one is better than the other, and vice-versa?</p>
  
  <p>I'm asking because I recently had a lecture in F# where the lecturer talked about both, and afterwards commented that he couldn't see the reason why both were included in the F# language.</p>
  
  <p><strong>Update:</strong></p>
  
  <p>Ok, so <strong><em>Vladislav Zorov</em></strong> links to a page with examples of using <strong>type augmentation</strong> both when defining your own types, and extending (or augmenting?) an external type.</p>
  
  <p><em><strong>pad</em></strong> links to an MSDN page where they call it intrinsic and optional <strong>type extension</strong>.</p>
  
  <p>Both seem to illustrate the same thing. Can someone come with a concrete example of <strong>type extension</strong> and another concrete example of <strong>type augmentation</strong> perhaps, in order to explicitly clarify what the two things are exactly?</p>