Module Diffing_with_keys

type !'a with_pos = {
  1. pos : int;
  2. data : 'a;
}
val with_pos : 'a list -> 'a with_pos list
type (!'l, !'r, !'diff) mismatch =
  1. | Name of {
    1. pos : int;
    2. got : string;
    3. expected : string;
    4. types_match : bool;
    }
  2. | Type of {
    1. pos : int;
    2. got : 'l;
    3. expected : 'r;
    4. reason : 'diff;
    }
type (!'l, !'r, !'diff) change =
  1. | Change of ('l, 'r, 'diff) mismatch
  2. | Swap of {
    1. pos : int * int;
    2. first : string;
    3. last : string;
    }
  3. | Move of {
    1. name : string;
    2. got : int;
    3. expected : int;
    }
  4. | Insert of {
    1. pos : int;
    2. insert : 'r;
    }
  5. | Delete of {
    1. pos : int;
    2. delete : 'l;
    }
val prefix : Format.formatter -> ('l, 'r, 'diff) change -> unit
module Define (D : sig ... end) : sig ... end