यह 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
पर pimped हो जाता है कि प्रदान करता है, के बाद से 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))
स्रोत
2012-09-04 18:21:23