为什么我们需要将 Apply 和 Applicative 类型分开 类?

Why do we need to separate Apply and Applicative type classes?

我在 cats documentation 中读到关于类型 class 的 ApplyApplicative。我想知道为什么库提供两种不同的类型 class 而不是只提供一种类型 class Applicative,这将扩展 Functor 并添加 ap ?有人使用 Apply 而不是 Applicative 吗?

Applicative提供了pure方法,这是"get in"的一种方式。否则,尽管您 可以 F[A] 转换为 F[B],或者使用 A => B(通过 map)或 F[A => B](通过 ap),你没有能力将任何东西放入 F。所以你只能让别人为你做。

Applicative 的不同之处在于,您 可以 把东西放进去,从无到有。

因为两者都有用("you are empowered to put things into an F" 和 "no, keep your hands off, and operate on what you're given"),ApplicativeApply 是不同的类型类。