<div dir="auto"><div dir="auto">Hi,</div><div dir="auto"><br></div><div dir="auto">I'm getting stuck on implementing `MonadBaseControl IO` for my application context type. What I have so far (in a minimized example) is</div><div dir="auto"><br></div><div dir="auto">```</div><div dir="auto">data Env = Env {envBalance :: !(TVar Int)}</div><div dir="auto"><br></div><div dir="auto">newtype AppM a = AppM { unAppM :: ReaderT Env IO a }</div><div dir="auto">  deriving (Functor, Applicative, Monad, MonadIO, MonadReader Env)</div><div dir="auto"><br></div><div dir="auto">instance MonadBase IO AppM where</div><div dir="auto">  liftBase = liftIO</div><div dir="auto"><br></div><div dir="auto">instance MonadBaseControl IO AppM where</div><div dir="auto">  type StM AppM a = a</div><div dir="auto">  liftBaseWith f = undefined</div><div dir="auto">  restoreM = return</div><div dir="auto">```</div><div dir="auto"><br></div><div dir="auto">I'm so utterly stuck on the definition of `liftBaseWith`... but I'm not 100% sure on the other bits either, though it "feels right".</div><div dir="auto"><br></div><div dir="auto">Any tips on how I should go about it?</div><div dir="auto"><br></div><div dir="auto">/M</div></div>