Module Diffing.Define

Define(Defs) creates the diffing types from the types defined in Defs and the functors that need to be instantatied with the diffing algorithm parameters

Parameters

module D: Defs

Signature

type nonrec change = change(D.left, D.right, D.eq, D.diff);

The type of potential changes on a list.

type patch = list(change);

A patch is an ordered list of changes.

module type Parameters = { ... };
module type S = { ... };
module Simple: (_: Parameters with type update_result := D.state) => S;
module Left_variadic: (_: Parameters with type update_result := (D.state, array(D.left))) => S;
module Right_variadic: (_: Parameters with type update_result := (D.state, array(D.right))) => S;