title: how does [<Literal>] differ from other constants in F#
body: <p>I am a bit confused by the Literal keyword and why it is necessary in F#.</p>
  
  <p>Reading the docs, it sounds to me that <code>[&lt;Literal&gt;]</code> is used to define a constant, however I am a bit confused how this constant differs from all other constants in F#..</p>
  
  <blockquote>
    <p>Values that are intended to be constants can be marked with the
    Literal attribute. This attribute has the effect of causing a value to
    be compiled as a constant.</p>
  </blockquote>
  
  <p>When I think of a constant, I think of something which is immutable....</p>
  
  <pre><code>let x = "a" + "b" //this is a immutable value, its value is constant
  [&lt;Literal&gt;]
  let y = "a" + "b" //this is also a immutable value, but why is this a special constant?
  </code></pre>
  
  <p>Is it because the 'normal' F# values are evaluated lazily and the <code>[&lt;Literal&gt;]</code> is not evaluated lazily..? is that what they mean with 'compiled as constant'..? or is there something else to it?</p>