- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
>=". 这个说法在什么意义上是正确的?-6ren"> >=". 这个说法在什么意义上是正确的?-在 LYHFGG作者指出“Monad 只是支持 >>= 的应用仿函数”(见下图)。如果我查看 Monad type class 的定义,我不明白这个说法怎么可能是正确的。 . Monad 类型类似乎与-6ren">
在 LYHFGG作者指出“Monad 只是支持 >>= 的应用仿函数”(见下图)。如果我查看 Monad type class 的定义,我不明白这个说法怎么可能是正确的。 .
Monad 类型类似乎与 Control.Applicative 没有任何关系。类型类,例如 Monad 类型类不是 Applicative 的子类型。因此很明显,从技术上讲,在 Haskell 中,Monad 和 Applicative 仿函数是完全独立的类型类。因此,如果作者的陈述是正确的,那么在不同的上下文中它也一定是正确的。
有人可以解释一下书作者所说的这个看似不真实的说法是什么意思吗?
他的说法应该如何解读?在什么背景下?也许在范畴论的背景下?
换句话说:我不明白如何将任何给定的 Monad 变成 Applicative functor。因为如果作者的陈述是正确的,那么每个 Monad 都可以机械地(通过使用算法)转换为 Applicative 仿函数。但真的可以做到吗?如果是,怎么办?
最佳答案
你是对的,该语句意味着当你只知道你的类型构造函数是一个 monad 时,你可以编写一个 Applicative 实例。如果M是一个monad,那么你可以写:
instance Applicative M where
pure = return
mf <*> mx =
mf >>= \f ->
mx >>= \x ->
return (f x)
实际上,从 GHC 7.10 开始,Applicative
将成为 Monad
的父类(super class),这意味着“Monad is Applicative plus ...”的概念将被烘焙在标准库中。
关于haskell - LYHFGG : "Monads are just applicative functors that support >>=". 这个说法在什么意义上是正确的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26194180/
在 LYHFGG作者指出“Monad 只是支持 >>= 的应用仿函数”(见下图)。如果我查看 Monad type class 的定义,我不明白这个说法怎么可能是正确的。 . Monad 类型类似乎与
我是一名优秀的程序员,十分优秀!