However, Pijul was inspired by this, with a number of differences, including support for line deletions (which changes everything) and multiple files, which cause many more conflict types.
Darcs was another major source of inspiration.
Second, is this really a common problem? People using the word categorical in a math context without mean either category-theoretical or the meaning in logic? Do you have an example?
Unison is a language/platform that incorporates some ideas from version control, but I don't know how far along they are.
I've got this pure functional language and rather than deal with impure IO I just assume a git repo as a data oracle and then file and string operations are all nice and pure!
Instead of regular IO you operate on 3-tuples of (hash, offset, length) where the hash is the git hash of a data blob, and offset and length specify a subset of the bytes in it.
Conceptually these 3-tuples represent lists of ints but the runtime is free to do whatever is most efficient in terms of representing and processing them "under the hood".