I feel that there is something that I don't understand completely:  I have been told that Haskell does not memoize function call, e.g.
> slowFib 50
will run just as slowly each time it is called.  However, I have read that Haskell has call-by-need semantics, which were described as "lazy evaluation with memoization"

I understand that
> fib50 = slowFib 50
will take a while to run the first time but be instant each subsequent call; does this count as memoization?

(I'm trying to understand "Purely Functional Data Structures", hence this question)

--
          Alex R