Категорія-теоретична обробка розрізень, виправлень та злиття?


14

Чи є категорія патчів, яка приблизно так виглядає:

  • Об'єкти - це рядки в деякому базовому алфавіті
  • Морфізми - це редагування сценаріїв ("diff" або "патчі") між рядками

Мене цікавлять ці питання:

  • Чи є категоричне поняття про мінімальний скрипт редагування? Може категорія патчів збагачена в PO-Sets?
  • Чи є злиття патчів категоричним натисканням?
  • Як узагальнити це від рядків до дерев (файлова система чи алгебраїчний тип даних)?

1
Ви хочете , щоб поглянути на теорію за Darcs VCS
Берги

1
... або Pijul , відносно недавня спроба створити "новіших Дарків". (І наскільки я пам’ятаю з цієї розмови, злиття - це поштовх до «вільного заповнення» різної категорії ...).
phipsgabler

Відповіді:


15

Як вказував Мартін , є певна робота щодо категоричного представлення пластирів. "Категорична теорія патчів" Мімрама та Ді Джусто є найбільш широким категоричним підходом до редагування сценаріїв, якими користуються UNIX diff.

У їхньому розумінні ти маєш те, що хочеш. Об'єктами є кінцеві послідовності слів над алфавітом L , розглядаються як відображення А:[н]L , де [н] позначає безліч з н елементів. Стрілка між А:[н]L і Б:[м]L - ін'єктивне часткове збільшення відображення f:[н][м]. Інжективність та збільшення є тим, що свідчать про те, що копії ніколи не перетинаються . Ви можете знайти всі деталі на папері .

Так, злиття розглядається як поштовх на вільне доповнення вищевказаної категорії. Нам потрібна добудова, щоб переконатися, що ми додамо конфлікти злиття в нашу конструкцію. Це не так, що злиття завжди існує.

У вашому другому запитанні немає жодних категоричних понять про мінімальний сценарій редагування з двох основних причин.

  1. Сценарії редагування бувають у всіх формах та формах. Деякі автори вважають вставки, вилучення та копії, деякі автори також люблять додавати заміни як операцію. Коли ви узагальнюєте від рядків до дерев, тоді безліч інших операцій стає здійсненною.

  2. абба . Який мінімальний сценарій редагування робить це? Є два! Ще раз, під час узагальнення дерев можна виявити ще більше ситуацій, коли поняття "мінімальність" є сумнівним.

Проведено багато роботи над узагальненням редагування сценаріїв до дерев. Це було розділено на два основні елементи роботи:

  • Нетипові дерева : Думайте лише про s-вирази. Відстань редагування дерев між двома деревами - це відстань редагування рядків між проходженням попереднього замовлення вказаних дерев. Ви можете перевірити деяку бібліографію від Demaine et al. або Павлік і Аугстен , наприклад.

  • Введені дерева : патчі над абстрактними синтаксичними деревами, які гарантовано зберігають чітку типовість об’єкта, тобто застосування патча завжди призведе до дійсного AST. Під набраним парасолькою менше операцій редагування, які можна врахувати. Заміна, наприклад, не має сенсу. Проте, існує диф над обходом дерев по Lempsink і ін. , яку згодом продовжив Вассена . В даний час я зосереджуюсь на підходах, що віддаляються від скриптів редагування для тих самих проблем, на які я вказував раніше, таких як наша остання робота чи якась більш рання робота, яка намагається скористатися структурою типу значень, що "латуються".

В жодному з цих випадків я не бачив ретельної категоричної інтерпретації патчів, структурованих по деревах.


Дивовижна відповідь! Але чому не повинно існувати категоричного поняття про мінімальні сценарії редагування лише тому, що вони не є унікальними? Межі (Co) також не є унікальними, лише до ізоморфізму.
Turion

Я думаю, ми могли б прийняти домовленість і включити конфлікти, або просто сказати, що відштовхування не завжди існують, а коли їх не існує, немає злиття?
Turion

1
АБdiffАБdiff3

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.