by<A, B> static method

Eq<A> by<A, B>(
  1. B f(
    1. A a
    ),
  2. Eq<B> eq
)

Convert an implicit Eq<B> to an Eq<A> using the given function f.

/// Convert an `Eq` on `int` to an `Eq` to check `String` length
final instance = Eq.instance<int>((a1, a2) => a1 == a2);
final by = Eq.by<String, int>((a) => a.length, instance);

expect(by.eqv('abc', 'abc'), true); // Same length
expect(by.eqv('abc', 'ab'), false); // Different length

Implementation

static Eq<A> by<A, B>(B Function(A a) f, Eq<B> eq) =>
    _Eq((x, y) => eq.eqv(f(x), f(y)));