[Haskell-cafe] help understanding lazy evaluation