Recibí el siguiente mensaje de error en Common Lisp.¿Qué hace | 5E | significa en Common Lisp?
¿Qué significa || significa en CL?
CL-USER> (write-to-string 5e)
The variable |5E| is unbound.
[Condition of type UNBOUND-VARIABLE]
Recibí el siguiente mensaje de error en Common Lisp.¿Qué hace | 5E | significa en Common Lisp?
¿Qué significa || significa en CL?
CL-USER> (write-to-string 5e)
The variable |5E| is unbound.
[Condition of type UNBOUND-VARIABLE]
| 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.
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
.
La sección 2.3.4 de CLHS describe la sintaxis de un símbolo. –
Gracias por su respuesta elaborada. – jeon