Control.Monad.Morph
는 지금까지 내가 말할 수있는, 포함 된 인스턴스 중 어느 것도 Monad m
제약 조건을 사용하지 Control.Monad.Morph.hoist에 Monad 제약이있는 이유는 무엇입니까?
class MFunctor t where
hoist :: Monad m => (forall a. m a -> n a) -> t m b -> t n b
이 포함되어 있습니다. 어떻게 그렇게 할 수 있을까요? 제약 조건을 사용하는 유효한 인스턴스가 있습니까 (예 :
hoist id = id
을 어떻게 상상할 수 있습니까?).
m
에있는 제약 조건의 의미는
n
이 아니며 무엇입니까?
[Control.Monad.Trans.Compose'] (https://hackage.haskell.org/package/mmorph-1.0.6/docs/Control-Monad-Trans-Compose)에서 문제가 발생할 것으로 예상했습니다. html). 그러나 모든 것은'호이스트 '에'Monad m'없이 잘 컴파일됩니다. – Alec
아마 모나드에만 의미가 있기 때문에 어쩌면? 내가 볼 수있는 한, 모나드 변압기 (스택)에 대한 펑터입니다. – Xeo
@Alec'Control.Monad.Trans.Compose'는'MFunctor' 인스턴스를 가지고 있지 않습니다. – Cirdec