在LYHFGG作者指出,“Monads只是应用仿函数,支持>> =” (见下图)。 我不明白如果我看看Monad type class的定义,这种说法可能是真实的。LYHFGG:“Monads只是支持>> =”的应用函子。这种说法在何种意义上是正确的?
Monad类型类似乎与Control.Applicative类型类没有任何关系,例如Monad类型类不是Applicative的子类型。所以很明显,在技术上,在Haskell中,Monads和Applicative仿函数是完全独立的类型类。因此,如果作者的陈述是真实的,那么在不同的情况下它必须是真实的。
有人能解释一下这本看似不真实的陈述的作者意味着什么吗?
他的陈述应该如何解释?在什么情况下?也许在类别理论的背景下?
换句话说: 我不明白如何将任何给定的Monad转换为Applicative函数。因为如果作者的陈述是真实的,那么每个Monad都可以机械地(通过使用算法)转换为Applicative函子。但是真的有可能这样做吗?如果是,如何?
是的,这是真的可能,正如在这个问题的答案中所述:http://stackoverflow.com/questions/13533769/the-equivalence-between-applicative-functor-and-monad。 – MvanGeest 2014-10-04 15:26:32