2010-07-01 5 views

risposta

10

| foo | è solo una rappresentazione stampata per simboli. 5e non legge come numero di default, quindi è un simbolo e può essere stampato come | 5E |. Si può usare anche per avere tutti i tipi di caratteri nei simboli, inclusi gli spazi bianchi. | questo è un simbolo, non è vero? | - è!

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> 

Nota anche che Common Lisp utilizza i simboli maiuscoli per impostazione predefinita. I simboli letti saranno in maiuscolo. Quindi il simbolo foo viene letto e quindi ha il nome di un simbolo "FOO". Per denotare un simbolo con lettere maiuscole o minuscole, si può usare | foo |. Se si crea un simbolo minuscolo con qualcosa di simile (intern "foo"), anche questo verrà stampato come | foo |. Se crei un simbolo denominato uppcase con qualcosa di simile (intern "FOO"), verrà stampato come foo. Questo è il motivo per cui 5e stampa come | 5E | con una lettera maiuscola E.

Se si dispone di un simbolo, è possibile ottenere il suo nome come stringa con la funzione SYMBOL-NAME.

È possibile leggere un numero intero da una stringa con la funzione PARSE-INTEGER. Ha un parametro di parole chiave: RADIX, in cui è possibile fornire la radice per la lettura.

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

Altrimenti utilizzare numeri esadecimali come # x5e o modificare la base di lettura.

Frank Shearar indica la documentazione nel Common Lisp HyperSpec: 2.3.4 Symbols as Tokens.

+1

La sezione CLHS 2.3.4 descrive la sintassi di un simbolo. –

+0

Grazie per la tua risposta elaborata. – jeon

5

Utilizza questi caratteri come virgolette. Sta cercando di interpretare 5e come nome di una variabile. La mia ipotesi è che vuoi davvero interpretarlo come un numero esadecimale, quindi dovrebbe probabilmente essere #x5e.

+0

Voglio davvero interpretare da 5e a # x5e. – jeon

+0

Risposta corretta. –

+0

Perché il downvote? – Gabe