使用管道,我正在尝试为ProxyFast或ProxyCorrect类型编写MonadTransControl实例。这就是我所拥有的:
instance MonadTransControl (ProxyFast a' a b' b) where
data StT (ProxyFast a' a b' b) a = StProxy { unStProxy :: ProxyFast a' a b' b Identity a}
liftWith = undefined
restoreT = undefined
我不知道如何编写liftWith 或restoreT。其他单子转换器的实例都使用“交换”单子的函数,例如 EitherT ema -> m (EitherT e Identity a),但我在管道中找不到任何这样的函数。ProxyCorrect / ProxyFast 的 MonadTransControl 实例如何?还是不能写一个?(如果是,是否可以在管道 4.0 中使用?)