<div dir="ltr">I'm looking at <a href="https://stackoverflow.com/questions/23768413/building-a-list-from-left-to-right-in-haskell-without">this</a> from Stackoverflow and wondering what is meant in the accepted answer when he says<div><br></div><div><i>In Haskell you can safely do recursive calls inside lazy data constructors, and there will be no risk of stack overflow or divergence. Placing the recursive call inside a constructor eliminates the need for an accumulator, and the order of elements in the list will also correspond to the order in which they are computed</i>:<br><br><font face="monospace">collatz :: Integer -> [Integer]<br>collatz n | n <= 1 = []<br>collatz n = n : collatz next where<br>    next = if even n then div n 2 else n * 3 + 1</font></div><div><br></div><div>What is meant by lazy data constructor in this context?<br></div><div><br></div><div>LB</div></div>