Realm v0.1.0 Realm.Setoid protocol View Source

A setoid is a type with an equivalence relation. This is most useful when equivalence of some data is not the same as equality. Since some types have differing concepts of equality, this allows overriding the behaviour from Kernel.==/2. To get the Setoid == operator override, simply use Realm.Setoid.

Type Class

An instance of Realm.Setoid must define Realm.Setoid.equivalent?/2

Setoid [equivalent?/2]

Link to this section Summary

Functions

Compare two setoids and determine if they are equivalent. Aliased as ==.

Link to this section Types

Link to this section Functions

Link to this function

equivalent?(a, b)

View Source
equivalent?(t(), t()) :: boolean()

Compare two setoids and determine if they are equivalent. Aliased as ==.

Examples

iex> equivalent?(1, 2)
false
iex> import Kernel, except: [==: 2, !=: 2]
...> %{a: 1} == %{a: 1, b: 2}
false
equivalent?(%Maybe.Just{just: 42}, %Maybe.Nothing{})
#=> false

Equivalence not equality

baby_harry = %Wizard{name: "Harry Potter", age: 10}
old_harry  = %Wizard{name: "Harry Potter", age: 17}
def chosen_one?(some_wizard), do: equivalent?(baby_harry, some_wizard)
chosen_one?(old_harry)
#=> true