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