Earlier quoted context omitted.
I just tried, and ghci (i.e. Haskell) does not blow up when confronted with > let f n = if n > 0 then n + f (n - 1) else 0 > f 1000000
...which is why we should be using lazy languages.
Although lazyness is the usual suspect, it has nothing to do with this.