【发布时间】:2016-11-21 01:59:48
【问题描述】:
所以我在 scala 中有一个多态数据类型 Tree,定义如下
sealed trait Tree[+A]
final case class Node[A](value: A) extends Tree[A]
final case class Branch[A](value: A, left: Tree[A], right: Tree[A]) extends Tree[A]
object Tree{
implicit def eqTree[T]: Eq[Tree[T]] = new Eq[Tree[T]] {
override def ==(t1: Tree[T], t2: Tree[T]): Boolean = true
}
}
还有一个类型类 Eq
trait Eq[T]{
def == (t1: T, t2: T) : Boolean
}
我正在努力做到这一点
object App1 extends App{
import Tree._
def equality[T](t1: T, t2: T)(implicit eq: Eq[T]): Boolean = eq.==(t1, t2)
println(equality(Node(1), Node(2)))
}
但是我得到以下错误
Error:(35, 19) could not find implicit value for parameter eq: typeclasses.Eq[typeclasses.Node[Int]]
println(equality(Node(1), Node(2)))
【问题讨论】:
-
T1和T2声明在哪里?
标签: scala polymorphism typeclass implicit