gpt4 book ai didi

haskell - Functor -> Applicative -> Monad 层次结构的意义是什么

转载 作者:行者123 更新时间:2023-12-04 18:11:11 24 4
gpt4 key购买 nike

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





Boilerplate code in the definition of a monad

(1 个回答)



Why should Applicative be a superclass of Monad?

(4 个回答)


5个月前关闭。




使 Functor 成为 Applicative 和 Monad 的父类(super class)有什么意义。据我所知,Applicative 和 Monad 都立即暗示了 Functor 的唯一实现。但是我每次都必须输入相同的 Functor 实现。有没有办法避免这样做?
此外,Monad 意味着 Applicative 的唯一实现遵守法律,那么为什么让 Applicative 成为 Monad 的父类(super class)呢?它再次使得为新数据类型实现 Applicative 变得多余。
有没有一种方法可以在不必实现 Applicative 和 Functor 的情况下制作 Monad(因为它的操作已经是最通用的了)。并且无需实现 Functor 即可制作 Applicative。
我看到了类层次结构的好处,因为我刚才所说的解释了它们之间的"is"关系。但同时必须实现每一个都很烦人。我只想定义return>>=并取回所有 3 的所有操作。

最佳答案

您可以通过以下方式获取这些实例:

import Control.Applicative
data Whatever a = {- ... -} deriving (Functor, Applicative) via (WrappedMonad Whatever)
最好添加 DefaultSignatures默认为 FunctorApplicative编译器违反规范时的类,因此您甚至不需要编写 via WrappedMonad ,但现在它已经完成了,我怀疑我们永远不会得到它们。太糟糕了。

关于haskell - Functor -> Applicative -> Monad 层次结构的意义是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70554190/

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