Stack usage with a state monad

Tomasz Zielonka t.zielonka at students.mimuw.edu.pl
Tue Dec 30 20:28:11 EST 2003


On Wed, Dec 31, 2003 at 02:54:18AM +0900, Koji Nakahara wrote:
> Hi,
> 
> I think the problem is in the State Monad itself;
> State Monad is lazy to compute its state.
> 
> I am not a haskell expert, and there may be better ideas.  But anyhow,
> when I use these >>>= and >>> instead of >>= and >>, 
> your example runs fine.  I hope it becomes some help.
> 
> m >>>= k = State $ \s -> let (a, s') = runState m s
> 			in	s `seq` runState (k a) s' -- force evaluation of the state
> 
> m >>> k = m >>>= \_ -> k

Ahh, right. So I didn't have to use UnboxedState. StrictState would do.

Best regards,
Tom

-- 
.signature: Too many levels of symbolic links


More information about the Haskell-Cafe mailing list