1 --!!! Test for error in type error message (fixed in Hugs 1.4)
4 newtype StateMonad m s a = MkStateMonad (s -> (m (s, a)))
6 instance Monad m => Monad (StateMonad m s) where
7 (>>=) (MkStateMonad fn1) f
8 = MkStateMonad (\st -> (do res <- fn1 st
10 (st', res') -> extrStateMonad (f res') st'))
11 return val = MkStateMonad (\st -> (return (st, val)))
13 extrStateMonad (MkStateMonad f) = f
15 getState :: Monad m => StateMonad m s s
16 getState = MkStateMonad (\st -> return (st, st))
18 -- popIndentList :: StateMonad IO Int ()