Есть ли категория патчей, которая выглядит примерно так:
- Объекты являются строками в некотором базовом алфавите
- Морфизмы - это скрипты редактирования ("diffs" или "patches") между строками
Я заинтересован в следующих вопросах:
- Есть ли категорическое понятие минимального сценария редактирования? Может быть, категория патчей пополнилась PO-сетами?
- Является ли объединение патчей категорическим выпуском?
- Как обобщить это из строк в деревья (файловая система или алгебраический тип данных)?
Ответы:
Как указал Мартин , есть некоторые работы по категориальному представлению патчей. «Категориальная теория патчей» Мимрама и Ди Джусто - самый обширный категориальный подход к сценариям редактирования, используемый в
UNIX diff
.В их смысле у вас есть то, что вы хотите. Объекты представляют собой конечные последовательности слов в алфавите , рассматриваемые как отображение , где обозначает множество с элементами. Стрелка между и является инъективным частичным возрастающим отображением . Инъективность и увеличение указывают на то, что копии никогда не пересекаются друг с другом. Вы можете найти все детали на бумаге .L A : [ n ] → L [ п ] N A : [ n ] → L B : [ м ] → L е: [ n ] → [ m ]
Да, слияние рассматривается как толчок к свободному завершению вышеуказанной категории. Мы нуждаемся в дополнении, чтобы убедиться, что мы добавляем конфликты слияния в нашу конструкцию. Это не тот случай, когда слияние всегда существует.
На ваш второй вопрос нет категорического понятия минимального сценария редактирования по двум основным причинам.
Edit-скрипты бывают разных форм и форм. Некоторые авторы рассматривают вставки, удаления и копии, некоторые авторы также любят добавлять замены как операцию. Когда вы обобщаете из строк в деревья, тогда становится возможным выполнение множества других операций.
Была проделана большая работа по обобщению сценариев редактирования для деревьев. Это было разделено на две основные части работы:
Нетипизированные деревья : думайте только о s-выражениях. Tree-edit-distance между двумя деревьями - это string-edit-distance между предварительным обходом указанных деревьев. Вы можете проверить некоторую библиографию Demaine et al. или Павлик и Аугстен , например.
Типизированные деревья : патчи над абстрактным синтаксисом. Деревья, которые гарантированно сохраняют типизацию объекта, т. Е. Применение патча всегда дает действительный AST. Под напечатанным зонтиком есть меньше операций редактирования, которые можно рассмотреть. Замена, например, не имеет смысла. Тем не менее, существует различие по обходу деревьев по предварительному порядку Lempsink et al. , который впоследствии был продлен Вассеной . В настоящее время я сосредотачиваюсь на подходах, которые дистанцируются от сценариев редактирования для тех самых проблем, на которые я указывал ранее, таких как наша последняя работа или некоторая более ранняя работа, которая пытается использовать в своих интересах структуру типа значений, которые «исправляются».
В любом из этих случаев я не видел тщательной категоричной интерпретации патчей с древовидной структурой.
источник
diff
diff3
В этом направлении есть немало работы. Вы можете начать с рассмотрения [1, 2], но они не исчерпывают тему.
С. Мимрам, К. Ди Джусто, Категориальная теория патчей .
C. Ангиули, Э. Морхаус, Д.Р. Ликата, Р. Харпер, Теория гомотопических патчей .
источник