title: Swift: why aren't all variables lazy by default?
body: <p>In comparing these two options for defining an instance property:</p>
  <blockquote>
  <p>var networkManager = NetworkManager.sharedInstance()</p>
  <p>var lazy networkManager = NetworkManager.sharedInstance()</p>
  </blockquote>
  <p>Both:</p>
  <ul>
  <li>Can evaluate a block to get the value</li>
  <li>Can be declared inline (not a block, like above)</li>
  </ul>
  <p>Lazy:</p>
  <ul>
  <li>Can refer to self</li>
  <li>Is not calculated until needed</li>
  <li>If you don't use it, it is never calculated</li>
  </ul>
  <p>Non-lazy:</p>
  <ul>
  <li>No benefits whatsoever</li>
  </ul>
  <p>It appears that there is no benefit to ever use a non-lazy variable. So why does the language allow the programmer to make this inferior choice?</p>
  <p>(I am NOT asking about the difference between var and let à la <a href="https://stackoverflow.com/questions/30815465/are-swift-constants-lazy-by-default">Are Swift constants lazy by default?</a>)</p>