newtype P r a = P ((a -> r) -> a)

unP :: P r a -> (a -> r) -> a
unP (P x) = x

instance Monad (P r) where
  return x = P $ const x
  P f >>= g = P $ \k -> unP (g (f (\v -> k $ unP (g v) k))) k

こんなモナドを見つけたんですが、既に名前が付いていたりしますか?
ReaderとContを合わせたようなやつです。