As I learnt in SICP, tree recursion's complexity grows exponentially with n. If in Haskell I wrote like,
fib n | n <= 1 = n
      | otherwise = fib (n-1) + fib (n-2)
Is it true that, since Haskell is lazy, it calculate fib 1, fib 2... all once, so the complexity is linear with n?
 
     
    