是否有"ApplicativeIO"课程?

dan*_*iaz 9 haskell applicative fam-proposal

在Hackage中是否存在一个类似于MonadIO但是对于Applicatives 的类型类,它允许人们轻松地将IO动作提升到 基于的"应用组合堆栈"IO

如果存在这样的类型类,是否会因实施" 申请Monad提案"而过时?该提案是否涉及放宽Monad约束MonadIO

Rei*_*ton 5

一年前有一个关于haskell-cafe的相关讨论。在Reddit 评论中,我举了一个g从 IO 到另一个 monad的自然变换 ( )的例子,它是一个应用函子态射(即满足 Gabriel Gonzalez 提到的定律)但不是一个 monad 态射(它不满足附加定律)与>>=)有关。所以,即使在与AMP的世界,ApplicativeIO mMonadIO 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)

魔法仙子会准确地定义ApplicativeIOMonadIO实例何时满足相应的法律。