here's i've tried far:
implicit val doubleeq = tolerantnumerics.tolerantdoubleequality(0.1) implicit val listeq = new equivalence[list[double]] { override def areequivalent(a: list[double], b: list[double]): boolean = { (a, b) match { case (nil, nil) => true case (x :: xs, y :: ys) => x === y && areequivalent(xs, ys) case _ => false } } }
the first assert succeeds second 1 fails:
assert(1.0 === 1.01) assert(list(1.0) === list(1.01))
is there way have collections use implicits i've defined elements well?
in case, redefined areequal
method providing new equality[list[double]]
subclass of equivalence[list[double]]
considering areequal
takes any
second type parameter.
implicit val listeq = new equality[list[double]] { def areequal(a: list[double], b: any): boolean = { def areequalrec(a: list[double], b: list[double]): boolean = { (a, b) match { case (nil, nil) => true case (x :: xs, y :: ys) => x === y && areequivalent(xs, ys) case _ => false } } b match { case dalist: list[double] => areequalrec(a, dalist) case _ => false } } }