Símbolos en LISP

Los símbolos son objetos de datos lisp y cada tipo de objeto de símbolo tiene un nombre llamado nombre de impresión.

Los nombres de los símbolos pueden contener cualquier combinación de letras y números, además de algunos caracteres especiales, como guiones. Un símbolo puede contener cualquier carácter alfabético, numérico o cualquier carácter excepto los caracteres delimitadores como paréntesis o espacios.

Ejemplos de símbolos:

Banana
age 
year-of-birth 
123%$ 
/home/user/work 
b^2-a*c

Diferencia entre números enteros y símbolos:

   enteros          

 simbolos                                   

Una secuencia de números del 0 al 9.

por ejemplo: +7 y 7 son números enteros.

Una secuencia de letras, dígitos y otros caracteres permitidos. 

ej.: + , – , * son todos símbolos .

Símbolos especiales T y NIL:

  • T: La verdad, «sí»
  • NIL: Falso, “no”

Ciertas funciones lisp llamadas predicados responden preguntas con T y NIL.

Note:                                                    
abcDEf
ABCDEF
ABCdef 
Are all the same symbol.
Lisp reader converts lowercase letters to corresponding uppercase letters while reading symbols so case makes 
no difference while notating a symbol

Algunas convenciones comunes de ceceo:

Si hay problemas al anotar un símbolo debido a letras minúsculas o caracteres especiales en su nombre, existen convenciones de escape.

  • Escribir un carácter ‘/’ antes de cualquier carácter hace que el carácter se trate como un carácter ordinario para su uso en un nombre de símbolo; en particular, suprime la conversión interna de letras minúsculas a mayúsculas.
5.6789/p0 : 5.6789p0 is 1 symbol.
5.6789/P0 : 5.6789P0 is another  symbol.
  • Nombre circundante del símbolo en la barra vertical.
|h^2 - 2gt| : h^2 - 2gt is a symbol .

(As visible dilimiter like spaces can also be used in the symbol name by 
surrounding it within ||.) 

Propiedades de los Símbolos:

En lisp, las propiedades se pueden asignar a los símbolos. 

For example : The symbol dog can have properties like colour , weight , breed.

Esto se hace con la ayuda de una lista de propiedades o plist . 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. No hay duplicados entre los indicadores.

Algunas funciones comunes relacionadas con la lista de propiedades:

  Función                            Sintaxis                                                         Uso                                                                                                                                          
obtener función obtener indicador de símbolo y valor predeterminado opcional get busca 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 cero
función setf setf((obtener función) valor) El setf se usa con get para crear un nuevo par de valores de indicador.
símbolo-plist (símbolo-plist símbolo) La lista de símbolos 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.

Lisp

(setf (get 'hritik 'age) '20)
;using setf function along with get to create an 
;indicator age with value 20 of symbol hritik
(setf (get 'hritik 'sibling) 'Anna)
;using setf function along with get to create 
;an indicator sibling with value Anna of symbol hritik
  
  
(write (get 'hritik 'sibling))
;using get function to give the property list of 
;symbol hritik for the indicator sibling
  
(terpri)
  
(write (symbol-plist 'hritik))
;using symbol-plist function to return plist of symbol hritik

Producción:

ANNA
(SIBLING ANNA AGE 20)

En el ejemplo anterior, hritik es un símbolo y una edad, los hermanos son propiedades (indicadores) que se le asignan con los valores 20 y Anna.

Lisp

(setf (get 'dog 'name) 'tom)
;using setf function along with get to create an indicator
;name with value tom of symbol dog
(setf (get 'dog 'breed) 'dalmatian)
;using setf function along with get to create an 
;indicator breed with value dalmatian of symbol dog
  
  
(write (symbol-plist 'dog))
;using symbol-plist function to return plist of symbol dog
  
(remprop 'dog 'breed)
(terpri)
;using remprop to remove the property breed of symbol dog
  
(write (symbol-plist 'dog))
;using symbol-plist function to return plist of symbol dog

Producción:

(BREED DALMATIAN NAME TOM)
(NAME TOM)

En el ejemplo anterior, la propiedad raza del perro símbolo se elimina mediante la función remprop .

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 *