Як вказував Мартін , є певна робота щодо категоричного представлення пластирів. "Категорична теорія патчів" Мімрама та Ді Джусто є найбільш широким категоричним підходом до редагування сценаріїв, якими користуються UNIX diff
.
У їхньому розумінні ти маєш те, що хочеш. Об'єктами є кінцеві послідовності слів над алфавітом L , розглядаються як відображення A : [ n ] → L , де [ n ] позначає безліч з н елементів. Стрілка між A : [ n ] → L і B : [ m ] → L - ін'єктивне часткове збільшення відображення f: [ n ] → [ m ]. Інжективність та збільшення є тим, що свідчать про те, що копії ніколи не перетинаються . Ви можете знайти всі деталі на папері .
Так, злиття розглядається як поштовх на вільне доповнення вищевказаної категорії. Нам потрібна добудова, щоб переконатися, що ми додамо конфлікти злиття в нашу конструкцію. Це не так, що злиття завжди існує.
У вашому другому запитанні немає жодних категоричних понять про мінімальний сценарій редагування з двох основних причин.
Сценарії редагування бувають у всіх формах та формах. Деякі автори вважають вставки, вилучення та копії, деякі автори також люблять додавати заміни як операцію. Коли ви узагальнюєте від рядків до дерев, тоді безліч інших операцій стає здійсненною.
a bб а . Який мінімальний сценарій редагування робить це? Є два! Ще раз, під час узагальнення дерев можна виявити ще більше ситуацій, коли поняття "мінімальність" є сумнівним.
Проведено багато роботи над узагальненням редагування сценаріїв до дерев. Це було розділено на два основні елементи роботи:
Нетипові дерева : Думайте лише про s-вирази. Відстань редагування дерев між двома деревами - це відстань редагування рядків між проходженням попереднього замовлення вказаних дерев. Ви можете перевірити деяку бібліографію від Demaine et al. або Павлік і Аугстен , наприклад.
Введені дерева : патчі над абстрактними синтаксичними деревами, які гарантовано зберігають чітку типовість об’єкта, тобто застосування патча завжди призведе до дійсного AST. Під набраним парасолькою менше операцій редагування, які можна врахувати. Заміна, наприклад, не має сенсу. Проте, існує диф над обходом дерев по Lempsink і ін. , яку згодом продовжив Вассена . В даний час я зосереджуюсь на підходах, що віддаляються від скриптів редагування для тих самих проблем, на які я вказував раніше, таких як наша остання робота чи якась більш рання робота, яка намагається скористатися структурою типу значень, що "латуються".
В жодному з цих випадків я не бачив ретельної категоричної інтерпретації патчів, структурованих по деревах.