Listas de propiedades en LISP

En Lisp, cada símbolo tiene una lista de propiedades ( plist ). Cuando se crea inicialmente un símbolo, su lista de propiedades está vacía. Una lista de propiedades consta de entradas donde cada entrada consta de una clave llamada indicador y un valor llamado propiedad. No hay duplicados entre los indicadores. A diferencia de las listas de asociación, las operaciones para agregar y eliminar entradas de plist alteran el plist en lugar de crear uno nuevo.

               Función                   

Sintaxis Uso
obtener función obtener indicador de símbolo y valor predeterminado opcional busque en la plist un indicador equivalente a indicador. Si se devuelve el valor encontrado o de lo contrario se devuelve el valor predeterminado. Si no se especifica el valor predeterminado, se devuelve nil.
función setf  setf((obtener función) propiedad/valor) setf se usa para crear un nuevo par de valores de propiedad.
símbolo-plist (símbolo-plist símbolo) symbol-plist le permite ver todas las propiedades de un símbolo
remendar indicador de símbolo de reparación La función remprop se utiliza para eliminar la propiedad equivalente al indicador.
obtener indicador de lugar getf y valor predeterminado opcional getf busca en la lista de propiedades almacenada en su lugar un indicador equivalente a un indicador. Si se encuentra uno, se devuelve el valor correspondiente; de lo contrario, se devuelve el valor predeterminado. Si no se especifica el valor predeterminado, se utiliza nil como valor predeterminado.
rem. indicador de lugar remf remf elimina la propiedad equivalente al indicador dado del lugar dado.

Ejemplo:

Lisp

(setf (get 'aastha 'age ) 20)
;using setf (which understands get as a place description) 
;to create indicator age with value 20 of symbol aastha.
  
(setf (get 'aastha 'occupation ) 'doctor)
;using setf (which understands get as a place description) 
;to create indicator occupation with value doctor of symbol aastha.
  
(setf (get 'aastha 'fav-book ) 'harrypotter)
;using setf (which understands get as a place description)
;to create indicator fav-book with value harrypotter of symbol aastha.
  
(write (symbol-plist 'aastha))
;using symbol-plist to return aastha(symbol's) plist .
  
(terpri)
(remprop 'aastha 'fav-book)
;using remprop to remove property of symbol aastha
;which has indicator fav-book
  
(write (symbol-plist 'aastha))
(terpri)
(setq x '())
(setf (getf x 'height ) 20)
  
;using setf along with getf to set property of
;indicator height as 20 at place x
(write(eq(getf x 'height) 20))
  
;using eq to check if property of
;indicator height at place x is 20
(terpri)
(remf x 'height)
  
;using remf to remove property 
;of indicator height at place x
(write(eq(getf x 'height) 20))

Producción:

(FAV-BOOK HARRYPOTTER OCCUPATION DOCTOR AGE 20)
(OCCUPATION DOCTOR AGE 20)
T
NIL

Publicación traducida automáticamente

Artículo escrito por umakwork1106 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *