Diffing.DefineDefine(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;