По сути, мне интересно, существует ли в Common Lisp такая вещь, как plist, вне концепции встроенного списка свойств символа. Поэтому, если у меня есть
(setq Joe '(:fav-season "Fall" :fav-color "Blue"))
, тогда я делаю
(setf (get 'Joe 'fav-season) "Summer")
(setf (get 'Joe 'fav-color) "Green")
У меня есть два отдельных списка, связанных с Joe
, идущими одновременно, один ad-ho c, другой "официальный", потому что он связан с символом Joe
.
(get 'Joe 'fav-color)
"Green"
или
(symbol-plist 'Joe)
(FAV-COLOR "Green" FAV-SEASON "Summer")
Так что я предполагаю прямое присвоение plist-подобного структура для Joe
(присваивание ячейке значения символа Joes
) не является действительно поддерживаемой структурой данных (например, get
, getf
et c.), как с символом Joe
список свойств. Ни как alist, который всегда является значением переменной и имеет assoc
, rassoc
, et c. Могу ли я поэтому заключить, что в действительности не используется концепция plist в реальном мире, кроме встроенной символьной ячейки для списков свойств? Так часто в уроках plist автоматически описывается как список свойств символа, и дальнейшее обсуждение концепции не происходит.
Думаю, в обратном направлении, я преследую довольно смутное, пятнистое представление о том, что хорошие, передовые практики структур данных в Лиспе.