newtype ContT r m a = ContT {runContT :: (a -> m r) -> m r}
newtype ContT m a = ContT {runContT :: forall r. (a -> m r) -> m r}


ContT m a 는 RankNTypes extension 켜야됨

둘이 별로 다를거 없다고 생각했는데

instance MonadReader r m => MonadReader r (ContT m) where
  reader = lift . reader
  local f m = lift $ local f (runContT m return)

이런건 후자만 되네..

ContT m a 도 쓸 가치가 있는건가..?