2012-09-04 28 views
17

में 'अनुक्रम' कहां है मैं स्कालाज़ सीख रहा हूं और मेरे पास एक ऐसी परियोजना है जो पहले से ही स्कालज़ 7 का उपयोग करती है। this question के बाद मैं समारोहस्केलज़ 7

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

(नहीं है कि यह इसे अपने आप को लिखने के लिए कठिन है) का उपयोग करना चाहते हैं। लेकिन उपरोक्त प्रश्न Scalaz6 का उल्लेख है।

Scalaz7 में अनुक्रम फ़ंक्शन कहां खोजें?

उत्तर

27

यह 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)) 

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^