Monad.Trans
usingReader
usingReaderT
evaluatingState
evaluatingStateT
executingState
executingStateT
usingState
usingStateT