Skip to content
Effect 4.0 is here. One ecosystem. Zero dependencies.

Differ

Interfaces for describing changes to a value as patches. A Differ<T, Patch> compares an old and new value, creates a patch for the difference, combines patches in order, and applies a patch to an old value to produce an updated value.

1 exports Since v2.0.0 Source

Models

Differ

interface
Since v2.0.0

Describes how to compute, combine, and apply patches for values of type T.

When to use

Use to model patch-based updates for a value type when callers need to compute a patch from two values, combine patches, and apply a patch later.

Details

A Differ provides an empty patch, computes the patch between two values, combines patches, and applies a patch to an old value to produce an updated value.

Signature

interface Differ<in out T, in out Patch> {
readonly empty: Patch;
combine(first: Patch, second: Patch): Patch;
diff(oldValue: T, newValue: T): Patch;
patch(oldValue: T, patch: Patch): T;
}