# Functor Diffing.Define

    module Define: functor (D : Defs) -> sig .. end

`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: |
`D` | : | `Defs`

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

The type of potential changes on a list.

    type patch = change list

A patch is an ordered list of changes.

    module type Parameters = sig .. end

    module type S = sig .. end

    module Simple: functor (* : sig

    end) -> S

    module Left_variadic: functor (* : sig

    end) -> S

Variadic diffing

    module Right_variadic: functor (* : sig

    end) -> S