dan*_*iaz 9 haskell applicative fam-proposal
在Hackage中是否存在一个类似于MonadIO但是对于Applicatives 的类型类,它允许人们轻松地将IO动作提升到 基于的"应用组合堆栈"IO?
如果存在这样的类型类,是否会因实施" 申请Monad提案"而过时?该提案是否涉及放宽Monad约束MonadIO?
一年前有一个关于haskell-cafe的相关讨论。在Reddit 评论中,我举了一个g从 IO 到另一个 monad的自然变换 ( )的例子,它是一个应用函子态射(即满足 Gabriel Gonzalez 提到的定律)但不是一个 monad 态射(它不满足附加定律)与>>=)有关。所以,即使在与AMP的世界,ApplicativeIO m而MonadIO m真的是不同的东西,即使m是一个Monad!
在理想的世界中,您将有这样的设置:
class Functor f => FunctorIO f where
liftIO :: IO a -> f a
-- such that liftIO is a natural transformation (automatic, by parametricity)
class (Applicative f, FunctorIO f) => ApplicativeIO f where
-- ... and liftIO is an applicative functor morphism
class (Monad f, ApplicativeIO f) => MonadIO f where
-- ... and liftIO is a monad morphism
Run Code Online (Sandbox Code Playgroud)
魔法仙子会准确地定义ApplicativeIO和MonadIO实例何时满足相应的法律。