gpt4 book ai didi

haskell - 为什么 `join` 不是 `Monad` 类的一部分

转载 作者:行者123 更新时间:2023-12-03 14:48:55 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Why is join standalone, instead of part of the minimal implementation of the Monad typeclass?

(3 个回答)


3年前关闭。




众所周知,(>>=)可以使用 fmap 来实现和 joinjoin可以使用 >>= 来实现.我们有什么理由不定义 Monad join 的类(class)包括并使用以下默认定义?

join x  = x >>= id
x >>= f = join $ f <$> x

这将允许一个最小定义只包含 (>>=)。或 join , 而不是强制 (>>=) .考虑到类别理论倾向于支持 join 可能有点帮助.

反对修改类的通常论点是我们破坏了向后兼容性。但是,在这种情况下,这不会发生 - 我们只添加了定义 Monad 的可能性。使用 join .

最佳答案

这意味着 Applicative-Monad proposal 会发生这种情况。 (已达到 GHC 7.10)。但是,有 a technical issue涉及type roles在 GHC 中,它无限期地推迟了你建议的实现。

关于haskell - 为什么 `join` 不是 `Monad` 类的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31552064/

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