首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scalaz7中的`sequence`在哪里

Scalaz7中的`sequence`在哪里
EN

Stack Overflow用户
提问于 2012-09-05 01:14:49
回答 1查看 2.8K关注 0票数 18

我正在学习Scalaz,并且我有一个已经使用了Scalaz7的项目。在this question之后,我想使用以下函数

代码语言:javascript
复制
sequence[T](l: List[Option[T]]): Option[List[T]]

(并不是说我自己写它很难)。但是前面提到的问题提到了Scalaz6。

在哪里可以找到Scalaz7中的序列函数?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-05 02:21:23

它在scalaz.Traverse类型类中定义,如下所示:

代码语言:javascript
复制
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实例。

您可以只导入所需的内容:

代码语言:javascript
复制
import scalaz._, std.list._, std.option._, syntax.traverse._

或者所有东西和厨房水槽:

代码语言:javascript
复制
import scalaz._, Scalaz._

然后你可以像这样使用它:

代码语言:javascript
复制
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))

或者,如果你想在你的问题中准确地使用公式:

代码语言:javascript
复制
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))
票数 29
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12268351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档