It doesn\'t look like anything stops you from defining a function like this:
tmp :: (MonadReader Int m, MonadReader Bool m) => m Int tmp = ifM ask ((+1) <$&