我在cats documentation中阅读了有关类型类Apply
和Applicative
的信息。我想知道为什么该库提供了两个单独的类型类,而不是仅提供一个类型类Applicative
,它会扩展Functor
并添加ap
吗?有人使用不是Apply
的Applicative
吗?
最佳答案
Applicative
提供pure
方法,这是一种“进入”的方法。否则,尽管您可以使用F[A]
(通过F[B]
)或A => B
(通过map
)将F[A => B]
转换为ap
,但是您没有能力在F
中放入任何内容。因此,您仅限于让别人为您做。Applicative
的不同之处在于您可以从零开始放入东西。
由于这两种方法都是有用的(“您被授权将其放入F
中”和“否,请放开手,然后根据给出的内容进行操作”),因此Applicative
和Apply
是单独的类型类。
关于scala - 为什么我们需要将Apply和Applicative类型类分开?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36848320/