View Source Funx.Eq protocol (funx v0.1.0)
The Funx.Eq
protocol defines an equality function, eq?/2
, for comparing two values,
and its complement, not_eq?/2
, for checking inequality.
Types that implement this protocol can define custom equality logic, allowing for domain-specific comparisons.
Fallback
The protocol uses @fallback_to_any true
, meaning that if a specific type does not
implement Funx.Eq
, it falls back to the default implementation for Any
, which
uses Elixir's built-in equality operator (==
).
Examples
With a custom implementation for a Funx.Monad.Maybe
type:
iex> Funx.Eq.eq?(Funx.Monad.Maybe.just(3), Funx.Monad.Maybe.just(3))
true
iex> Funx.Eq.eq?(Funx.Monad.Maybe.just(3), Funx.Monad.Maybe.just(5))
false
iex> Funx.Eq.eq?(Funx.Monad.Maybe.nothing(), Funx.Monad.Maybe.nothing())
true
iex> Funx.Eq.eq?(Funx.Monad.Maybe.nothing(), Funx.Monad.Maybe.just(5))
false
Checking inequality with not_eq?/2
:
iex> Funx.Eq.not_eq?(Funx.Monad.Maybe.just(3), Funx.Monad.Maybe.just(3))
false
iex> Funx.Eq.not_eq?(Funx.Monad.Maybe.just(3), Funx.Monad.Maybe.just(5))
true
iex> Funx.Eq.not_eq?(Funx.Monad.Maybe.nothing(), Funx.Monad.Maybe.nothing())
false
iex> Funx.Eq.not_eq?(Funx.Monad.Maybe.nothing(), Funx.Monad.Maybe.just(5))
true
Summary
Functions
Returns true
if a
is equal to b
, otherwise returns false
.
Returns true
if a
is not equal to b
, otherwise returns false
.
Types
@type t() :: term()
All the types that implement this protocol.