Я сравниваю исходную статью Хуэта с реализацией Clojure и попыткой выяснить, почему были внесены изменения . Я новичок в Clojure, поэтому, если я ошибаюсь в своей интерпретации кода Clojure, поправьте меня.
В статье Хуэ тип пути (по Окамлу) Top | Node of tree list * path * tree list;;
. В Clojure есть два дополнительных поля: pnodes
и changed?
. Для чего нужны эти поля? Прав ли я, полагая, что l
и r
соответствуют первой и третьей записи в типе Хуэта, а ppath
- второму?
В застежке-молнии Huet используются связанные списки (обратите внимание, что я говорю о самом типе Loc, а не о структуре данных, с которой работает застежка-молния), в то время как в некоторых местах, например l
, реализация Clojure использует векторы. Почему это изменение и каковы последствия временной сложности реализации Clojure?