Logo MVUish.Avalonia

Diff Module

Pure diff functions between item snapshots. No UI types involved.

Functions and values

Function or value Description

apply collection changes

Full Usage: apply collection changes

Parameters:
Type parameters: 'T

Apply changes to a collection, in order.

collection : ObservableCollection<'T>
changes : Change<'T> list

keyed keyOf oldItems newItems

Full Usage: keyed keyOf oldItems newItems

Parameters:
Returns: Result<Change<'T> list, DuplicateKeys<'K>>
Type parameters: 'T, 'K (requires equality and equality)

Compute the minimal changes that turn oldItems into newItems, matching items by keyOf. A key that survives while its item changed produces a Set. Returns DuplicateKeys when either side repeats a key.

keyOf : 'T -> 'K
oldItems : IReadOnlyList<'T>
newItems : IReadOnlyList<'T>
Returns: Result<Change<'T> list, DuplicateKeys<'K>>

structural oldItems newItems

Full Usage: structural oldItems newItems

Parameters:
Returns: Change<'T> list
Type parameters: 'T (requires equality)

Compute changes that turn oldItems into newItems using structural equality, without keys. A remove and insert that meet at one position collapse into a single Set. Repeated values are allowed. Cost is O(old count * new count) time and space.

oldItems : IReadOnlyList<'T>
newItems : IReadOnlyList<'T>
Returns: Change<'T> list

Type something to start searching.