I have noticed that I almost exclusively use `lazy val` assignments as they often avoid unnecessary computations, and I can't see that many situations where one would *not* want to do so (dependency on mutable variables being a notable exceptions of course).

It would seem to me that this is one of the great advantages of functional programming and one should encourage its use whenever possible and, if I understood correctly, Haskell does exactly this by default.

So why are Scala values not lazy by default? Is it solely to avoid issues relating to mutable variables?