Added RWS.

Just a thought: is it worth using a record here? I feel like labelling these type variables could be helpful. Maybe something like

data RWST r w s m a = RWST (r -> s -> m { result :: a, state :: s, log :: w })