Ich vergleiche Huet's original paper mit Clojure's implementation und versuchen herauszufinden, warum die Änderungen vorgenommen wurden. Ich bin ein Clojure-Neuling, also wenn ich falsch liege bei meiner Interpretation des Clojure-Codes, korrigiere mich bitte.Warum verwendet die Clojure-Reißverschluss-Implementierung verschiedene Typen und Datenstrukturen von Huets Reißverschluss?
In Huets Papier ist der Typ eines Pfades (in Ocaml) Top | Node of tree list * path * tree list;;
. In Clojure gibt es zwei zusätzliche Felder, pnodes
und changed?
. Was ist der Zweck dieser Felder? Habe ich Recht zu glauben, dass l
und r
dem ersten und dritten Eintrag in Huets Typ entsprechen, und dass ppath
der zweite ist?
Huets Reißverschluß verwendet verknüpfte Listen überall (ich spreche über den Loc-Typ selbst, nicht die Datenstruktur des Reißverschlusses), während an einigen Stellen, zum Beispiel l
, die Clojure-Implementierung Vektoren verwendet. Warum die Veränderung und was bedeutet die zeitliche Komplexität der Clojure-Implementierung?