# Module type `Diff2.S`

Output signature of `Diff`

.Make.

`val lcs : ?equal:(elem -> elem -> bool) -> t -> t -> elem common list`

`lcs ~equal seq1 seq2`

computes the LCS (longest common sequence) of`seq1`

and`seq2`

. Elements of`seq1`

and`seq2`

are compared with`equal`

.`equal`

defaults to`Pervasives.(=)`

.Elements of lcs are

``Common (pos1, pos2, e)`

where`e`

is an element,`pos1`

is a position in`seq1`

, and`pos2`

is a position in`seq2`

.

`val diff : ?equal:(elem -> elem -> bool) -> t -> t -> elem edit list`

`diff ~equal seq1 seq2`

computes the diff of`seq1`

and`seq2`

. Elements of`seq1`

and`seq2`

are compared with`equal`

.Elements only in

`seq1`

are represented as``Removed (pos, e)`

where`e`

is an element, and`pos`

is a position in`seq1`

; those only in`seq2`

are represented as``Added (pos, e)`

where`e`

is an element, and`pos`

is a position in`seq2`

; those common in`seq1`

and`seq2`

are represented as``Common (pos1, pos2, e)`

where`e`

is an element,`pos1`

is a position in`seq1`

, and`pos2`

is a position in`seq2`

.