【发布时间】:2022-01-02 07:07:53
【问题描述】:
让 Functor 成为 Applicative 和 Monad 的超类有什么意义。据我所知,Applicative 和 Monad 都立即暗示了 Functor 的唯一实现。但是我每次都必须输入相同的 Functor 实现。有没有办法避免这样做?
还有更多 Monad 意味着 Applicative 的唯一实现遵守法律那么为什么让 Applicative 成为 Monad 的超类?它再次使为新数据类型实现 Applicative 变得多余。
有没有一种方法可以在不必实现 Applicative 和 Functor 的情况下制作 Monad(因为它的操作已经是最通用的了)。并且无需实现 Functor 即可制作 Applicative。
我看到了类层次结构的好处,因为我刚才所说的解释了它们之间的“是”关系。但同时必须实现每一个都很烦人。我只想定义return 和>>= 并将所有3 的所有操作都返回。
【问题讨论】:
标签: haskell monads functor applicative default-method