Não trabalha com sequenciamento

Eu tenho esse tipo, basicamente uma seta Kleisli:

{-# language DeriveFunctor #-}

data Plan m i o = Plan  (i -> m o) deriving Functor

instance (Monad m) => Applicative (Plan m i) where
    pure x = Plan (\_ -> pure x)
    Plan f <*> Plan x = Plan (\i -> f i <*> x i)

Uma vez que tem umApplicative exemplo, eu ligoApplicativeDo e tente criar um valor usando do-notation:

{-# language ApplicativeDo #-}

myplan :: Plan IO () ()
myplan = do
    pure ()
    pure ()

Não funciona:

No instance for (Monad (Plan IO ())) arising from a do statement

Existe uma maneira de fazê-lo funcionar? Estou usando o GHC 8.0.1.

questionAnswers(2)

yourAnswerToTheQuestion