Zafu/Abstract/Eqsource code:
Eqeq, eq_by, eq_from_fn, eq_specialized, laws_Eq, neqEq[a]type Eq[a: -*]
eqdef eq[a](inst: Eq[a], left: a, right: a) -> Bool
eq_byreferences: Eq
def eq_by[a, b](inst: Eq[a], project: b -> a) -> Eq[b]
eq_from_fnConstructor from equality; inequality is derived.
def eq_from_fn[a](eq_fn: (a, a) -> Bool) -> Eq[a]
eq_specializedConstructor that allows supplying both operations.
def eq_specialized[a](eq_fn: (a, a) -> Bool, neq_fn: (a, a) -> Bool) -> Eq[a]
laws_EqEq law checker for three sample values.
def laws_Eq[a](inst: Eq[a], x: a, y: a, z: a) -> Test
neqdef neq[a](inst: Eq[a], left: a, right: a) -> Bool