Plist

Uma property list (lista de propriedades) é simplesmente uma lista que alterna uma chave, um valor, etc, onde suas chaves são simbolos (não é possível utiilizar :test). Mais precisamente, a plist tem um cons cell em que car é a chave, que cdr aponta para a próxima cons cell em que car seja o valor.

Esta plist por exemplo:

(defparameter my-plist (list 'foo "foo" 'bar "bar"))

é representada assim:

[o|o]---[o|o]---[o|o]---[o|/]
 |       |       |       |
FOO     "foo"   BAR     "bar"

Acessamos o valor com getf (list elt) (retorna o valor) (a lista é o primeiro elemento),

removemos um elemento com remf.

(defparameter my-plist (list 'foo "foo" 'bar "bar"))
;; => (FOO "foo" BAR "bar")
(setf (getf my-plist 'foo) "foo!!!")
;; => "foo!!!"