Thanks for the advice. However, though I don't know how ghc manages the heap, I 
am not sure it is possible to achieve constant heap usage, because a value of 
type State is a function, and >>= is creating a call stack in this case. I 
mean, I think that, even if the argument of f :: a -> State s a has a stricness 
flag, the value m0 :: State s a is itself a function of the state (with type 
s); then the value ((m0 >>= f) >>= f) >>= .....) >>= f is applied to a state 
s0, this must be passed down to the bottom of the call stack to perform the 
actual computation. And this may eat up a lot of heap space.

Do you know what can I do about this?

Thanks again!
Adrian

P.S. I appologize for bothering you, but my programming background is in C, not 
in Haskell, and I have many "white spots" as far as memory management in 
functional programming is concerned.

Thanks again!
Adrian
_______________________________________________
Haskell-Cafe mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to