Witchcraft v1.0.0-beta.2 Witchcraft.Setoid 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 Witchcraft.Setoid
.
Type Class
An instance of Witchcraft.Setoid
must define Witchcraft.Setoid.equivalent?/2
Setoid [equivalent?/2]
Link to this section Summary
Link to this section Types
Link to this section Functions
Link to this function
equivalent?(a, b)
View Source
equivalent?(Witchcraft.Setoid.t, Witchcraft.Setoid.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
Link to this function
nonequivalent?(a, b)
View Source
nonequivalent?(Witchcraft.Setoid.t, Witchcraft.Setoid.t) :: boolean
The opposite of equivalent?/2
Examples
iex> nonequivalent?(1, 2)
true