[Haskell-cafe] Stack vs Heap allocation

Malcolm Wallace Malcolm.Wallace at cs.york.ac.uk
Fri May 9 06:04:12 EDT 2008


Edsko de Vries <devriese at cs.tcd.ie> wrote:

> > (...(((1+2)+3)+4) ... + 10000000)
> > which requires stack in proportion to the number of nested parentheses
> 
> Ah, that makes! So does it make sense to talk about "tail recursive
> thunks"? Or does the evaluation of thunks always take stack space
> proportional to the "nesting level"? 

The key reason why nested additions take stack space, is because (+) on
Integers is *strict* in both arguments.  If it were somehow non-strict
instead, then the unevaluated parts of the number would be heap-allocated
rather than stack-allocated.

Regards,
    Malcolm


More information about the Haskell-Cafe mailing list