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
--
Koji Nakahara
_______________________________________________
Haskell-Cafe mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell-cafe