2016-09-13 6 views
0

を動作しません。次のプログラムは動作します。しかし輸入scalaz.syntax.traverse._はscala7.0.6で

import scalaz._, Scalaz._ 

object Playground extends App { 
    val smallNumbers = List(1,2,3,4,5) 
    val doubleSmall: Int => Option[Int] = x => if (x < 30) Some(x * 2) else None 

    import scalaz.syntax.traverse._ 

    println(smallNumbers.traverse(doubleSmall)) 
} 

、私はオブジェクトPlaygroundimport scalaz.syntax.traverse._を移動する場合、の上ファイルを取得すると、次のようになります。

Error: value traverse is not a member of List[Int] 

なぜですか?

答えて

1

あなたは同じ範囲内でScalaz._と​​をインポート:Scalaz._と​​が異なる(ネスト)にインポートされる場合

<ToTraverseOps: error> is not a valid implicit value for 
    Wrapper.Playground.smallNumbers.type => ?{def traverse: ?} because: 
reference to ToTraverseOps is ambiguous; 
it is imported twice in the same scope by 
import scalaz.syntax.traverse._ 
and import Scalaz._ 
      println(smallNumbers.traverse(doubleSmall)) 

は競合、後者の影前者はありませんスコープ。または完全にimport scalaz.syntax.traverse._を落とすことができます、それはコンパイルされます。

scalacには、フラグ-Xlog-implicitsが役立ちます。