加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Scalaz7中的“sequence”在哪里?

发布时间:2020-12-16 09:20:54 所属栏目:安全 来源:网络整理
导读:我正在学习Scalaz,我有一个已经使用Scalaz7的项目.以下 this question我想使用该功能 sequence[T](l: List[Option[T]]): Option[List[T]] (不是很难自己写).但上述问题提到Scalaz6. Where to find the sequence function in Scalaz7? 解决方法 它在 scalaz.T



我正在学习Scalaz,我有一个已经使用Scalaz7的项目.以下 this question我想使用该功能

sequence[T](l: List[Option[T]]): Option[List[T]]

(不是很难自己写).但上述问题提到Scalaz6.

Where to find the sequence function in Scalaz7?

解决方法

它在 scalaz.Traverse类型的类中定义,它看起来像这样:

def sequence[G[_]:Applicative,A](fga: F[G[A]]): G[F[A]] =
  traversal[G].run[G[A],A](fga)(ga => ga)

scalaz.syntax.TraverseOps提供了一个可以被打包到List的版本,因为List有一个Traverse实例.

您可以导入您需要的东西:

import scalaz._,std.list._,std.option._,syntax.traverse._

或一切和厨房水槽:

import scalaz._,Scalaz._

然后你可以这样使用它:

scala> val xs: List[Option[Int]] = Some(1) :: Some(2) :: Nil
xs: List[Option[Int]] = List(Some(1),Some(2))

scala> xs.sequence
res0: Option[List[Int]] = Some(List(1,2))

或者如果你想在你的问题中完全配方:

scala> def sequence[T](l: List[Option[T]]): Option[List[T]] = l.sequence
sequence: [T](l: List[Option[T]])Option[List[T]]

scala> sequence(xs)
res1: Option[List[Int]] = Some(List(1,2))

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读