For reference...

Generic monadic operations

liftM :: Monad m ⇒ (a → b) → m a → m b mapM :: Monad m ⇒ (a → m b) → [a] → m [b]

State monad operations

inFst :: StateM s1 a → StateM (s1,s2) a inSnd :: StateM s2 a → StateM (s1,s2) a runS :: StateM s a → s → (a,s)