2010-07-01 22 views

Respuesta

10

| foo | es solo una representación impresa de símbolos. 5e no lee como un número por defecto, por lo que es un símbolo y puede imprimirse como | 5E |. Uno puede usarlo también para tener todo tipo de caracteres en símbolos, incluido el espacio en blanco. | este es un símbolo, ¿no? | - ¡es!

CL-USER > (describe '|this is a symbol, isn't it?|) 

|this is a symbol, isn't it?| is a SYMBOL 
NAME   "this is a symbol, isn't it?" 
VALUE   #<unbound value> 
FUNCTION  #<unbound function> 
PLIST   NIL 
PACKAGE  #<The COMMON-LISP-USER package, 798/1024 internal, 0/4 external> 

Tenga en cuenta también que Common Lisp usa símbolos en mayúscula de forma predeterminada. Los símbolos leídos estarán en mayúscula. Entonces el símbolo foo es leído y luego tiene un nombre de símbolo "FOO". Para designar un símbolo con letras mayúsculas o minúsculas, se puede usar | foo |. Si crea un símbolo en minúscula con algo así como (interno "foo"), también se imprimirá como | foo |. Si crea un uppcase named symbol con algo así como (interno "FOO"), entonces se imprimirá como foo. Esa es la razón por la que 5e se imprime como | 5E | con mayúscula E.

Si tiene un símbolo, puede obtener su nombre como una cadena con la función SÍMBOLO-NOMBRE.

Puede leer un entero de una cadena con la función PARSE-INTEGER. Tiene un parámetro de palabra clave: RADIX, donde puede proporcionar la base para la lectura.

CL-USER > (parse-integer (symbol-name '5e) :radix 16) 
94 

De lo contrario, utilice números hexadecimales como # x5e o cambie la base de lectura.

Frank Shearar señala la documentación en Common Lisp HyperSpec: 2.3.4 Symbols as Tokens.

+1

La sección 2.3.4 de CLHS describe la sintaxis de un símbolo. –

+0

Gracias por su respuesta elaborada. – jeon

5

Está usando esos caracteres como comillas. Está intentando interpretar 5e como un nombre de una variable. Supongo que realmente quieres que lo interprete como un número hexadecimal, por lo que probablemente sea #x5e.

+0

Realmente quiero interpretar de 5e a # x5e. – jeon

+0

Respuesta correcta. –

+0

¿Por qué el voto a favor? – Gabe