Hello,<br><br>A question recently popped into my mind: does lazy evaluation reduce the need to &quot;proper&quot; tail-recursion?<br>I mean, for instance :<br><br>fmap f [] = []<br>fmap f (x:xs) = f x : fmap f xs<br><br>Here fmap is not tail-recursive, but thanks to the fact that operator (:) is lazy, I think that it may still run in constant space/time, am I right?<br>