I don't know how to avoid heap memory allocations in haskell or make sure memory is on the stack, but both are very easy to do in C++.
Yup. I know it's easy and the default behavior in C++.
This Haskell page says, it is pretty common to allocate and deallocate memory immediately, and that GHC handles this pretty efficiently, which probably explains why Haskellers dont seem to care about this (though it seems weird to me).