Porównuję Huet's original paper z Clojure's implementation i próbuję dowiedzieć się, dlaczego zmiany zostały wprowadzone. Jestem nowicjuszem Clojure, więc jeśli się mylę w mojej interpretacji kodu Clojure, popraw mnie.Dlaczego implementacja zamka Clojure wykorzystuje różne typy i struktury danych ze suwaka Huet?
W artykule Hueta typ ścieżki to (w Ocaml) Top | Node of tree list * path * tree list;;
. W Clojure dostępne są dwa dodatkowe pola: pnodes
i changed?
. Jaki jest cel tych pól? Czy mam rację, sądząc, że l
i r
odpowiadają pierwszym i trzecim wpisom w typie Hueta, oraz że ppath
jest drugim?
Zamek błyskawiczny Huet wykorzystuje połączone listy (uwaga mówię o samym typie Loc, a nie o strukturze danych, z którą działa zamek), podczas gdy w niektórych miejscach, na przykład l
, implementacja Clojure wykorzystuje wektory. Skąd ta zmiana i jaka jest jej konsekwencja dla złożoności czasowej wdrożenia Clojure?