为什么替代类型 class 需要是 Control.Applicative 的子 class
Why does the Alternative typeclass need to be a sub-class of Control.Applicative
Haskell 提供了一个标准的类型类 'Alternative',它有效地为任何也是 Applicative 的类型提供 <|>
运算符。
据我所知,Alternative 被认为是 Applicative 上的 Monoid,但是 <|>
运算符似乎在很多类型中也完全有意义,这些类型也不是 Applicative Functors,并且不需要成为对 Applicative 类型类的任何特定依赖,以使其正常工作。
为什么 Alternative 需要成为 Applicative 的子类?如果是,是否有标准类型类来定义非应用类型的类似功能?
我认为 semigroupoids
包中的 Alt
最接近 'standard' 类型类。 https://hackage.haskell.org/package/semigroupoids-5.0.0.1/docs/Data-Functor-Alt.html#t:Alt
Haskell 提供了一个标准的类型类 'Alternative',它有效地为任何也是 Applicative 的类型提供 <|>
运算符。
据我所知,Alternative 被认为是 Applicative 上的 Monoid,但是 <|>
运算符似乎在很多类型中也完全有意义,这些类型也不是 Applicative Functors,并且不需要成为对 Applicative 类型类的任何特定依赖,以使其正常工作。
为什么 Alternative 需要成为 Applicative 的子类?如果是,是否有标准类型类来定义非应用类型的类似功能?
我认为 semigroupoids
包中的 Alt
最接近 'standard' 类型类。 https://hackage.haskell.org/package/semigroupoids-5.0.0.1/docs/Data-Functor-Alt.html#t:Alt