DeepEqual

trait DeepEqual[A1, A2, Ptr1[_], Ptr2[_]]

Comparing of (potentially cyclic) object graphs for equality. Features:

  • abstracted over pointers;
  • termination and correctness in presence of cycles;
  • stack safety.

XXX: Relies on meaningful hashCode and equals for Ptr1

Companion:
object
class Object
trait Matchable
class Any

Value members

Abstract methods

def equal(a1: A1, a2: A2): IsEqual[Ptr1, Ptr2]
Implicitly added by lift
def equal(a1: A1, a2: A2): IsEqual[Ptr1, Ptr2]
Implicitly added by listInstance
def equal(a1: A1, a2: A2): IsEqual[Ptr1, Ptr2]
Implicitly added by optionInstance
def equal(a1: A1, a2: A2): IsEqual[Ptr1, Ptr2]
Implicitly added by setInstance
def equal(a1: A1, a2: A2): IsEqual[Ptr1, Ptr2]
Implicitly added by vectorInstance
def equal(a1: A1, a2: A2): IsEqual[Ptr1, Ptr2]

Concrete methods

final def deepEqual[M[_]](a1: A1, a2: A2)(deref1: NaturalTransformation[Ptr1, M], deref2: NaturalTransformation[Ptr2, M])(implicit eq2: HEqualK[Ptr2], M0: BindRec[M], M1: Applicative[M]): M[Boolean]
Implicitly added by lift
final def deepEqual[M[_]](a1: A1, a2: A2)(deref1: NaturalTransformation[Ptr1, M], deref2: NaturalTransformation[Ptr2, M])(implicit eq2: HEqualK[Ptr2], M0: BindRec[M], M1: Applicative[M]): M[Boolean]
Implicitly added by listInstance
final def deepEqual[M[_]](a1: A1, a2: A2)(deref1: NaturalTransformation[Ptr1, M], deref2: NaturalTransformation[Ptr2, M])(implicit eq2: HEqualK[Ptr2], M0: BindRec[M], M1: Applicative[M]): M[Boolean]
Implicitly added by optionInstance
final def deepEqual[M[_]](a1: A1, a2: A2)(deref1: NaturalTransformation[Ptr1, M], deref2: NaturalTransformation[Ptr2, M])(implicit eq2: HEqualK[Ptr2], M0: BindRec[M], M1: Applicative[M]): M[Boolean]
Implicitly added by setInstance
final def deepEqual[M[_]](a1: A1, a2: A2)(deref1: NaturalTransformation[Ptr1, M], deref2: NaturalTransformation[Ptr2, M])(implicit eq2: HEqualK[Ptr2], M0: BindRec[M], M1: Applicative[M]): M[Boolean]
Implicitly added by vectorInstance
final def deepEqual[M[_]](a1: A1, a2: A2)(deref1: NaturalTransformation[Ptr1, M], deref2: NaturalTransformation[Ptr2, M])(implicit eq2: HEqualK[Ptr2], M0: BindRec[M], M1: Applicative[M]): M[Boolean]
final def lift: DeepEqual[Ptr1[A1], Ptr2[A2], Ptr1, Ptr2]
Implicitly added by lift
final def lift: DeepEqual[Ptr1[A1], Ptr2[A2], Ptr1, Ptr2]
Implicitly added by listInstance
final def lift: DeepEqual[Ptr1[A1], Ptr2[A2], Ptr1, Ptr2]
Implicitly added by optionInstance
final def lift: DeepEqual[Ptr1[A1], Ptr2[A2], Ptr1, Ptr2]
Implicitly added by setInstance
final def lift: DeepEqual[Ptr1[A1], Ptr2[A2], Ptr1, Ptr2]
Implicitly added by vectorInstance
final def lift: DeepEqual[Ptr1[A1], Ptr2[A2], Ptr1, Ptr2]