Eric Kow wrote: > > "I would contribute to darcs if only..."
... patch theory were defined rigorously. It seems to me that the core of darcs is not well-understood. I mean, the darcs developer have come amazingly far with the informal model you described in [1] (for darcs 1, what about darcs 2 ?), but ultimately, it's lacking a well-defined semantics. For instance, in a commutation X Y <-> Y1 X1 , what exactly does it mean for Y1 and X1 "to perform the same change as Y and X"? Why exactly is the trivial choice Y1:=X and X1:=Y wrong? What about "meaningless" changes? For instance, given the file 1 apples 2 bananas 3 beer 4 cookies 5 rice a "meaningless" change would be the patch M = delete line 1; add "apples" as first line This patch does not nothing with the file, but it has quite an effect when commuted with a patch N = change line 1 to "pears" If Y1 is a valid choice for a commutation, so is M Y1 ; but why would that be wrong? Of course, it's "intuitive" that this is wrong and it's apparently possible to hack some code together is supposed to do "the right thing", but I doubt that it's well-understood. IMHO this is the root of the algorithmic problems in darcs. I think that the litmus test for "well-defined semantics" is being able to create a toy version of darcs. I mean, I am able to implement Simply Typed Lambda Calculus or Hindley-Milner Type Inference in a spare evening because it's well-defined in various papers but I am unable to implement the Roundy-Arjan-Ganesh Patch Formalism over a free weekend because it involves undocumented magic that I don't understand. [1]: http://en.wikibooks.org/wiki/Understanding_darcs/Patch_theory Regards, apfelmus _______________________________________________ darcs-users mailing list [email protected] http://lists.osuosl.org/mailman/listinfo/darcs-users
