6 { runState :: s -> (# a, s #) }
8 instance Monad (State s) where
9 return x = State $ \s -> (# x, s #)
10 m >>= n = State $ \s ->
12 (# r, s' #) -> runState (n r) s'
15 get = State $ \s -> (# s, s #)
17 put :: s -> State s ()
18 put s' = State $ \s -> (# (), s' #)
20 modify :: (s -> s) -> State s ()
21 modify f = State $ \s -> (# (), f s #)
23 evalState :: State s a -> s -> a
25 = case runState s i of
28 execState :: State s a -> s -> s
30 = case runState s i of