Mam następujący komunikat o błędzie w Common Lisp.Co to | 5E | znaczy w Common Lisp?
Co robi || znaczy w CL?
CL-USER> (write-to-string 5e)
The variable |5E| is unbound.
[Condition of type UNBOUND-VARIABLE]
Mam następujący komunikat o błędzie w Common Lisp.Co to | 5E | znaczy w Common Lisp?
Co robi || znaczy w CL?
CL-USER> (write-to-string 5e)
The variable |5E| is unbound.
[Condition of type UNBOUND-VARIABLE]
| foo | to tylko drukowana reprezentacja symboli. 5e nie jest domyślnie odczytywany jako liczba, więc jest symbolem i może być wydrukowany jako | 5E |. Można go również używać do wyświetlania wszystkich symboli w symbolach, w tym białych znaków. | to jest symbol, prawda? | - to jest!
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>
Należy również zauważyć, że Common Lisp domyślnie używa symboli wielkich liter. Odczytywane symbole będą pisane wielkimi literami. Zatem symbol foo jest odczytywany, a następnie ma nazwę symbolu "FOO". Aby wskazać symbol z małymi lub mieszanymi literami, można użyć | foo |. Jeśli utworzysz małe litery z czymś podobnym (stażysta "foo"), to również zostanie wydrukowane jako | foo |. Jeśli utworzysz paczkę o nazwie symbol z czymś podobnym (stażysta "FOO"), to zostanie wydrukowane jako foo. To jest powód, dla którego 5e drukuje jako | 5E | z wielką literą E.
Jeśli masz symbol, możesz uzyskać jego nazwę jako napis z funkcją SYMBOL-NAME.
Możesz odczytać liczbę całkowitą z ciągu znaków z funkcją PARSE-INTEGER. Ma parametr słowa kluczowego: RADIX, w którym można podać podstawę do czytania.
CL-USER > (parse-integer (symbol-name '5e) :radix 16)
94
W przeciwnym razie użyj liczb szesnastkowych, takich jak # x5e lub zmień bazę odczytu.
Frank Shearar zwraca uwagę na dokumentację Common Lisp HyperSpec: 2.3.4 Symbols as Tokens.
Używa tych znaków jako cytatów. Próbuje interpretować 5e
jako nazwę zmiennej. Domyślam się, że naprawdę chcesz, aby był interpretowany jako liczba szesnastkowa, więc prawdopodobnie powinien to być #x5e
.
Sekcja CLHS 2.3.4 opisuje składnię symbolu. –
Dziękuję za wyczerpującą odpowiedź. – jeon