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
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;