询问EitherT的Applicative实例定义位置,为何未在指定模块中
EitherT的Applicative实例位置说明
EitherT的Applicative实例就定义在它所在的Control.Monad.Trans.Either模块中,完全符合避免孤儿实例的规则——实例定义在类型自身的模块里。
你在Haddock文档中找不到它,通常是因为该实例是通过DeriveApplicative语言扩展自动推导生成的,而Haddock默认不会展示这类自动推导的实例。直接查看该模块的源码就能看到对应的实现逻辑:
pure会将目标值包装为Right,再嵌入到底层Applicative上下文;<*>则借助底层Applicative的liftA2函数,完成两个EitherT值的应用操作。
内容的提问来源于stack exchange,提问作者mherzl
相关产品推荐
相关产品推荐

