为什么我们需要将 Apply 和 Applicative 类型分开 类?
Why do we need to separate Apply and Applicative type classes?
我在 cats documentation 中读到关于类型 class 的 Apply
和 Applicative
。我想知道为什么库提供两种不同的类型 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"),Applicative
和 Apply
是不同的类型类。
我在 cats documentation 中读到关于类型 class 的 Apply
和 Applicative
。我想知道为什么库提供两种不同的类型 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"),Applicative
和 Apply
是不同的类型类。