【发布时间】:2016-10-08 03:49:54
【问题描述】:
Control.Monad.Morph 包括
class MFunctor t where
hoist :: Monad m => (forall a. m a -> n a) -> t m b -> t n b
据我所知,所包含的实例都没有使用Monad m 约束。一个人怎么可能这样做?是否存在使用约束的有效实例(鉴于hoist id = id,我很难想象如何使用)?约束在m 而不是n 有什么意义?
【问题讨论】:
-
我原以为
Control.Monad.Trans.Compose会出现一些问题,但在hoist上没有Monad m时,一切都可以正常编译... -
也许是因为它只对 monad 有意义?据我所知,它是一个单子转换器(堆栈)上的函子。
-
@Alec
Control.Monad.Trans.Compose没有MFunctor实例。
标签: haskell monads typeclass functor