[Haskell-beginners] Understanding cached fibonnacci function