同时使用无形和Scalaz 6 - 冲突进口

时间:2013-12-21 17:27:15

标签: scala scalaz scala-macros shapeless

我正在尝试定义这个同时使用无形和Scalaz的方法,但它正在从地图的scalaz中获取一个隐含的东西,而不是某些东西(也许是一个“隐式宏”?我甚至都不知道那是什么)来自无形状:

import scalaz._
import Scalaz._
import Category._
import shapeless.{Lens => _, _}
import poly._
import syntax.std.tuple._
import language.{higherKinds,implicitConversions}

/** Partitions an object which is isomorphic to a Seq, into two objects of the same type. */
def partitionIso[A,B](p: B => Boolean)(a: A)(implicit iso: A <=> Seq[B]): (A, A) =
  iso.to(a).partition(p).map(iso.from(_))

Eclipse说:

Multiple markers at this line
- Implicit arguments found: => 
 ( scalaz.Functor.Tuple2Functor )
- type mismatch; found : (Seq[B], A) required: (A, A)
- Implicit conversions found: => Tuple2MA()

如何更改此代码以使其编译?

1 个答案:

答案 0 :(得分:2)

当有人还在学习Scala的时候,我从未遇到过这个问题(虽然这是一个可怕的事情implicit没有人谈论过,因为它们看起来很酷),但我认为你有一些选项:

  • 通过在导入中将其别名为implicit来禁用您不想要的_(仅当implicit 时才有效特质),如this
  • 使用同名的非implicit方法覆盖implicit
  • 只是不要导入隐式转换。如果需要,写下你自己做同样的事情。