>=". 这个说法在什么意义上是正确的?-6ren"> >=". 这个说法在什么意义上是正确的?-在 LYHFGG作者指出“Monad 只是支持 >>= 的应用仿函数”(见下图)。如果我查看 Monad type class 的定义,我不明白这个说法怎么可能是正确的。 . Monad 类型类似乎与-6ren">
gpt4 book ai didi

haskell - LYHFGG : "Monads are just applicative functors that support >>=". 这个说法在什么意义上是正确的?

转载 作者:行者123 更新时间:2023-12-02 21:02:49 25 4
gpt4 key购买 nike

LYHFGG作者指出“Monad 只是支持 >>= 的应用仿函数”(见下图)。如果我查看 Monad type class 的定义,我不明白这个说法怎么可能是正确的。 .

Monad 类型类似乎与 Control.Applicative 没有任何关系。类型类,例如 Monad 类型类不是 Applicative 的子类型。因此很明显,从技术上讲,在 Haskell 中,Monad 和 Applicative 仿函数是完全独立的类型类。因此,如果作者的陈述是正确的,那么在不同的上下文中它也一定是正确的。

有人可以解释一下书作者所说的这个看似不真实的说法是什么意思吗?

他的说法应该如何解读?在什么背景下?也许在范畴论的背景下?

换句话说:我不明白如何将任何给定的 Monad 变成 Applicative functor。因为如果作者的陈述是正确的,那么每个 Monad 都可以机械地(通过使用算法)转换为 Applicative 仿函数。但真的可以做到吗?如果是,怎么办?

enter image description here

最佳答案

你是对的,该语句意味着当你只知道你的类型构造函数是一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com