Теоретико-категоричная обработка различий, патчей и слияний?


14

Есть ли категория патчей, которая выглядит примерно так:

  • Объекты являются строками в некотором базовом алфавите
  • Морфизмы - это скрипты редактирования ("diffs" или "patches") между строками

Я заинтересован в следующих вопросах:

  • Есть ли категорическое понятие минимального сценария редактирования? Может быть, категория патчей пополнилась PO-сетами?
  • Является ли объединение патчей категорическим выпуском?
  • Как обобщить это из строк в деревья (файловая система или алгебраический тип данных)?

1
Возможно, вам захочется взглянуть на теорию, стоящую за Darcs VCS
Bergi

1
... или Пиджул , относительно недавняя попытка создать "более новых Darcs". (И, насколько я помню из этого выступления, слияние - это толчок в "свободном завершении" категории diff ...).
phipsgabler

Ответы:


15

Как указал Мартин , есть некоторые работы по категориальному представлению патчей. «Категориальная теория патчей» Мимрама и Ди Джусто - самый обширный категориальный подход к сценариям редактирования, используемый в UNIX diff.

В их смысле у вас есть то, что вы хотите. Объекты представляют собой конечные последовательности слов в алфавите , рассматриваемые как отображение , где обозначает множество с элементами. Стрелка между и является инъективным частичным возрастающим отображением . Инъективность и увеличение указывают на то, что копии никогда не пересекаются друг с другом. Вы можете найти все детали на бумаге .LA:[N]L[N]NA:[N]LВ:[м]Lе:[N][м]

Да, слияние рассматривается как толчок к свободному завершению вышеуказанной категории. Мы нуждаемся в дополнении, чтобы убедиться, что мы добавляем конфликты слияния в нашу конструкцию. Это не тот случай, когда слияние всегда существует.

На ваш второй вопрос нет категорического понятия минимального сценария редактирования по двум основным причинам.

  1. Edit-скрипты бывают разных форм и форм. Некоторые авторы рассматривают вставки, удаления и копии, некоторые авторы также любят добавлять замены как операцию. Когда вы обобщаете из строк в деревья, тогда становится возможным выполнение множества других операций.

  2. aббa

Была проделана большая работа по обобщению сценариев редактирования для деревьев. Это было разделено на две основные части работы:

  • Нетипизированные деревья : думайте только о s-выражениях. Tree-edit-distance между двумя деревьями - это string-edit-distance между предварительным обходом указанных деревьев. Вы можете проверить некоторую библиографию Demaine et al. или Павлик и Аугстен , например.

  • Типизированные деревья : патчи над абстрактным синтаксисом. Деревья, которые гарантированно сохраняют типизацию объекта, т. Е. Применение патча всегда дает действительный AST. Под напечатанным зонтиком есть меньше операций редактирования, которые можно рассмотреть. Замена, например, не имеет смысла. Тем не менее, существует различие по обходу деревьев по предварительному порядку Lempsink et al. , который впоследствии был продлен Вассеной . В настоящее время я сосредотачиваюсь на подходах, которые дистанцируются от сценариев редактирования для тех самых проблем, на которые я указывал ранее, таких как наша последняя работа или некоторая более ранняя работа, которая пытается использовать в своих интересах структуру типа значений, которые «исправляются».

В любом из этих случаев я не видел тщательной категоричной интерпретации патчей с древовидной структурой.


Отличный ответ! Но почему не должно быть категорического понятия минимальных сценариев редактирования только потому, что они не уникальны? (Co) пределы также не уникальны, только с точностью до изоморфизма.
Turion

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

1
AВdiffAВdiff3

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.