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

Jam*_*ies 13 haskell applicative monoids

Haskell提供了一个标准类型类"替代",它有效地<|>为任何类型的应用程序提供操作符.

正如我所理解的那样,Alternative被认为是一个关于Applicative的Monoid,但是<|>运算符似乎在许多不是Applicative Functors的类型中都是完全有意义的,并且不需要对Applicative类类的任何特定依赖它工作正常.

是否有一个理由为什么Alternative需要成为Applicative的子类,如果有的话,是否有一个标准的类型类来定义非应用类型的类似功能?

Sjo*_*her 6

我认为Altsemigroupoids包中最接近成为"标准"类型类.https://hackage.haskell.org/package/semigroupoids-5.0.0.1/docs/Data-Functor-Alt.html#t:Alt