Используя каналы, я пытаюсь написать экземпляр MonadTransControl для ProxyFast или ProxyCorrect. Вот что у меня есть:
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 e m a -> m (EitherT e Identity a), но я не смог найти такую функцию в каналах. Как выглядит экземпляр для MonadTransControl для ProxyCorrect / ProxyFast? Или написать невозможно? (Если да, возможно ли это в pipe 4.0?)
MonadTransControl
. Есть ли какой-нибудь учебник или сообщение в блоге, в котором объясняется, как его использовать? - person Gabriel Gonzalez   schedule 07.07.2013