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?