haskell - 为什么 Alternative 类型类需要是 Control.Applicative 的子类

标签 haskell applicative monoids alternative-functor

Haskell 提供了一个标准类型类“Alternative”,它有效地提供了 <|>任何类型的运算符,它也是一个 Applicative。

据我了解,Alternative 被认为是 Applicative 上的 Monoid,但是 <|>运算符似乎在很多不是 Applicative Functors 的类型中也完全有意义,并且不需要对 Applicative 类型类有任何特定的依赖关系就可以正常工作。

为什么 Alternative 需要成为 Applicative 的子类,是否有原因,如果是这样,是否有标准类型类来定义非应用类型的类似功能?

最佳答案

我认为 Alt来自 semigroupoids package 最接近于成为“标准”类型类。 https://hackage.haskell.org/package/semigroupoids-5.0.0.1/docs/Data-Functor-Alt.html#t:Alt

关于haskell - 为什么 Alternative 类型类需要是 Control.Applicative 的子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30481092/

相关文章:

objective-c - 在 ReactiveCocoa 中编写 Haskell 的突破

haskell - 没有仿函数的应用程序

haskell - 将混合类型(可能是 Applicative)类型的参数应用于函数的最佳方法

haskell - 如何组合将 bool 值返回给一个函数的函数

c# - LINQ 相当于 f# 的 builder.Zero()?

performance - 如何在Haskell中使用内联的相位控制?

haskell - 绑定(bind)来自哪里?

string - 如何将一个字符串拆分为长度全部为 3 的字符串列表?

haskell - 乔姆斯基层次结构中类型类和语法级别之间的对应关系

scala - 内部具有monoid和函数的元组的适用实例