gpt4 book ai didi

scala - 我应该为 Scalaz 的遍历功能导入什么

转载 作者:行者123 更新时间:2023-12-04 11:51:13 26 4
gpt4 key购买 nike

在我读到的有关 Scalaz 遍历功能的每个示例中,都完成了以下导入:

import scalaz._
import Scalaz._

好像不能用 traverseU直到我 import Scalaz._ .

Scalaz对象如何注入(inject) traverseU我的收藏?我完全迷失在引用文档中。

如果我只想要 traverse,我应该导入什么和 traverseU方法?

最佳答案

对于 collection traverseU func您必须导入 traverseU 的语法(TraverseOps 的隐式方法),Traverse[C] 的隐式实例(对于 collection 类型 C )和 Applicative[R] (对于 func 结果类型 R[X] )。

例如:

import scalaz.syntax.traverse.ToTraverseOps // F[A] => TraverseOps[F, A]
import scalaz.std.list.listInstance // Traverse[List]
import scalaz.std.option.optionInstance // Applicative[Option]

List(1, 2, 3).traverseU{ Option(_) }
// Some(List(1, 2, 3))

如果结果类型为 func不是 R[X]Applicative[R] , 但有些 RMonoid[R]你必须导入 Monoid[R]隐式方法的实例 Applicative.monoidApplicative :
import scalaz.std.anyVal.intInstance

List(1, 2, 3).traverseU{ identity }
// 6

请注意 listInstance也是 MonadPlus[List] , Zip[List] , Unzip[List] , ETC。

因此,如果您只想获得 Traverse[List]出于某种充分的理由,您必须这样对待我们:
implicit val traverseList: scalaz.Traverse[List] = scalaz.std.list.listInstance
implicit val applicativeOption: scalaz.Applicative[Option] = scalaz.std.option.optionInstance

关于scala - 我应该为 Scalaz 的遍历功能导入什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27548802/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com