Как запоздалое продолжение этого , кто-то может объяснить мне, почему структура данных, используемая в файлах пакетов Emacs ELPA archive-contents
, представляет собой пунктирную пару имени (символа) и вектора, которыйсодержит много вещей?
В чем преимущество такого подхода?Это кажется слишком преднамеренным, чтобы быть случайным ударом.На каком прецеденте находится это здание?
(1
(ace-window .
[(0 9 0)
((avy (0 2 0)))
"Quickly switch windows." single
((:url . "https://github.com/abo-abo/ace-window")
(:keywords "window" "location"))])
... представьте себе (1 ...)
, в котором гораздо больше членов списка;Например, список доступных пакетов MELPA огромен.Поэтому, если я сделаю (cdr (assq 'ace-window THELIST))
, у меня есть сопутствующий вектор пунктирной пары, начинающийся с ace-window
.Казалось бы, список был разработан для использования предыдущего sexp.Так что да, почему они использовали вектор в этой ситуации?Это хорошая идиоматическая практика?Я слышал, что Clojure рекомендует больше использовать массивы и векторы над списками.Это больше соответствует философии Clojure?Так что, если список больше похож на кортеж, то есть с множеством, неизменяющимися членами, следует ли использовать векторы вместо списков?Или это разновидность загадочной проблемы с кортежами ?