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!!!"