title: Generating Fibonacci numbers in Haskell?
body: <p>In Haskell, how can I generate Fibonacci numbers based on the property that the nth Fibonacci number is equal to the (n-2)th Fibonacci number plus the (n-1)th Fibonacci number?</p>
  
  <p>I've seen this:</p>
  
  <pre><code>fibs :: [Integer]
  fibs = 1 : 1 : zipWith (+) fibs (tail fibs)
  </code></pre>
  
  <p>I don't really understand that, or how it produces an infinite list instead of one containing 3 elements.</p>
  
  <p>How would I write haskell code that works by calculating the actual definition and not by doing something really weird with list functions?</p>