listen :: (RWST r w s m a) -> RWST r w s m (a, w) | Monoid w & Monad m
listen m = RWST \r s->runRWST m r s >>= \(a, s`, w)->pure ((a, w), s`, w)
listen :: (RWST r w s m a) -> RWST r w s m (a, w) | Monoid w & Monad m
listen m = RWST \r s->runRWST m r s >>= \(a, s`, w)->pure ((a, w), s`, w)