User talk:108.160.242.130

I think you should clarify why

p' = runState p

(x, s1) = p' s0

would work

ie. Why runState is like

runState :: State s a -> s -> (a, s)

ie. Clarify the syntax behind

newtype State s a = State { runState :: s -> (a, s) }