Funx.Eq
Mix.install([
{:funx, "0.3.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
import Funx.Eq
With a custom implementation for a Funx.Monad.Maybe type:
eq?(Funx.Monad.Maybe.just(3), Funx.Monad.Maybe.just(3))
eq?(Funx.Monad.Maybe.just(3), Funx.Monad.Maybe.just(5))
eq?(Funx.Monad.Maybe.nothing(), Funx.Monad.Maybe.nothing())
eq?(Funx.Monad.Maybe.nothing(), Funx.Monad.Maybe.just(5))
Checking inequality with not_eq?/2:
not_eq?(Funx.Monad.Maybe.just(3), Funx.Monad.Maybe.just(3))
not_eq?(Funx.Monad.Maybe.just(3), Funx.Monad.Maybe.just(5))
not_eq?(Funx.Monad.Maybe.nothing(), Funx.Monad.Maybe.nothing())
not_eq?(Funx.Monad.Maybe.nothing(), Funx.Monad.Maybe.just(5))
eq?/2
Returns true if a is equal to b, otherwise returns false.
Examples
eq?(1, 1)
eq?(1, 2)
not_eq?/2
Returns true if a is not equal to b, otherwise returns false.
Examples
not_eq?(1, 1)
not_eq?(1, 2)