9
在Hackage中是否有類似於MonadIO
的類型類別,但對於Applicative
s,允許人們輕鬆地將IO
動作擡升爲"applicative composition stacks",基於IO
?是否有「ApplicativeIO」類?
如果這種類型類存在,它會由Applicative-Monad Proposal的實施作出過時了嗎?該提案是否涉及對MonadIO
的Monad
限制的放寬?
在Hackage中是否有類似於MonadIO
的類型類別,但對於Applicative
s,允許人們輕鬆地將IO
動作擡升爲"applicative composition stacks",基於IO
?是否有「ApplicativeIO」類?
如果這種類型類存在,它會由Applicative-Monad Proposal的實施作出過時了嗎?該提案是否涉及對MonadIO
的Monad
限制的放寬?
有a related discussion on haskell-cafe一年前。在Reddit comments我給an example從IO自然變換(g
)到另一個單子是一個適用函子射(即,滿足加布裏埃爾·岡薩雷斯提到的法律),但不是一個單子射(它不符合有關的附加法到>>=
)。所以,即使在與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
而神奇的仙女將準確界定ApplicativeIO
和MonadIO
情況下,當相應的法律感到滿意。
我覺得放鬆'Monad'約束是值得考慮的。 – 2014-09-26 17:58:32
如果人們想知道,法律將是'liftAIO(純r)=純r'和'liftAIO(f <*> x)= liftAIO f <*> liftAIO x' – 2014-09-26 20:15:10
我想問題的答案是「在Hackage a中的某處類似於MonadIO但類似於應用程序?是「否」(至少我找不到任何東西),但這並不意味着@GabrielGonzalez在某個時候不會寫關於它的博客文章。 – bheklilr 2014-09-26 21:53:46