【发布时间】:2021-02-25 13:41:39
【问题描述】:
我将通过 https://www.scala-exercises.org/ 为 Cats 服务。我想我明白Apply.ap 是什么意思。但我看不到它的任何用法。
有什么区别:
Apply[Option].map(Some(1))(intToString)
和
Apply[Option].ap(Some(intToString))(Some(1))
有人可以解释更多或指出更多解释吗?
【问题讨论】:
-
说实话,我从来没有直接使用过
ap。相反,我使用tupled、mapN和traverse之类的东西隐式使用它。 -
谢谢这是我的理解“不在用户代码中”。 Luis,还有
apN和mapN一样,但我猜答案是一样的。 -
Apply是Applicative的一个特殊类型类,它也是一个 Functor。 Applicative 提供ap操作。它与 Functor 的 map 非常相似,但参数中的函数已经在F[_]域中。在很多情况下,例如 Monoid,它们可以互换使用,但有一些例外。 -
在 FP 中,
ap更常用作与形状为ap(map)的map的组合,也就是众所周知的liftA2。请注意ap是一个非常基础的操作,您应该知道何时使用它而不是flatMap。
标签: scala functional-programming functor scala-cats applicative