Treba prechádzať zoznam vlastností, ktorý vráti SYMBOL-PLIST a vrátiť hodnotu vzťahujúcu sa k zadanému atribútu.
SETF nastaví hodnotu
atribútu symbolu
GET získa hodnotu daného atribútu daného symbolu
SYMBOL-PLIST vráti pre daný symbol zoznam
(atribut1 hodnota1 ... atributn hodnotan).
; Prechádza atribúty (nepárne prvky zoznamu)
; a prvok za daným atribútom vráti.
(defun vrath (a zoz)
(cond ((null zoz) NIL)
((equal a (first zoz)) (first (rest zoz)))
(T (vrath a (rest (rest zoz))))
)
)
; Hlavná funkcia.
(defun my-get (symbol atribut)
(vrath atribut (symbol-plist symbol))
)
; Príklady:
(setf (get 'symb 'ATRIBUT1) 'HODNOTA1)
(setf (get 'symb 7) 'HODNOTA2)
(symbol-plist 'symb) ; -> (7 HODNOTA2 ATRIBUT1 HODNOTA1)
(get 'symb 'ATRIBUT1) ; -> HODNOTA1
(get 'symb 7) ; -> HODNOTA2
(my-get 'symb 'ATRIBUT1) ; -> HODNOTA1
(my-get 'symb 7) ; -> HODNOTA2