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

Reply via email to