2010-07-01 16 views

Répondre

10

| foo | est juste une représentation imprimée pour les symboles. 5e ne se lit pas comme un nombre par défaut, donc c'est un symbole et peut être imprimé comme | 5E |. On peut l'utiliser aussi pour avoir toutes sortes de caractères dans les symboles, y compris les espaces. c'est un symbole, n'est-ce pas? - c'est!

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> 

Notez également que Common Lisp utilise des symboles majuscules par défaut. Les symboles lus seront mis en majuscule. Donc, le symbole foo est lu et a ensuite un nom de symbole "FOO". Pour désigner un symbole avec des minuscules ou des majuscules, on peut utiliser | foo |. Si vous créez un symbole en minuscule avec quelque chose comme (intern "foo"), il sera également imprimé comme | foo |. Si vous créez un symbole nommé uppcase avec quelque chose comme (intern "FOO"), alors il sera imprimé comme foo. C'est la raison pour laquelle 5e s'imprime sous | 5E | avec une majuscule E.

Si vous avez un symbole, vous pouvez obtenir son nom en tant que chaîne avec la fonction SYMBOL-NAME.

Vous pouvez lire un entier à partir d'une chaîne avec la fonction PARSE-INTEGER. Il a un paramètre de mot-clé: RADIX, où vous pouvez fournir la base pour la lecture.

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

Sinon, utilisez des nombres hexadécimaux comme # x5e ou changez la base de lecture. Frank Shearar indique la documentation dans CommonSpik HyperSpec: 2.3.4 Symbols as Tokens.

+1

La section CLHS 2.3.4 décrit la syntaxe d'un symbole. –

+0

Merci pour votre réponse élaborée. – jeon

5

Il utilise ces caractères comme des guillemets. Il essaie d'interpréter 5e comme le nom d'une variable. Je suppose que vous voulez vraiment l'interpréter comme un nombre hexadécimal, donc il devrait probablement être #x5e.

+0

Je veux vraiment interpréter de 5e à # x5e. – jeon

+0

Bonne réponse. –

+0

Pourquoi la downvote? – Gabe