Я получил следующее сообщение об ошибке в Common Lisp.Что такое | 5E | означает в Common Lisp?
Что делает || означает в CL?
CL-USER> (write-to-string 5e)
The variable |5E| is unbound.
[Condition of type UNBOUND-VARIABLE]
Я получил следующее сообщение об ошибке в Common Lisp.Что такое | 5E | означает в Common Lisp?
Что делает || означает в CL?
CL-USER> (write-to-string 5e)
The variable |5E| is unbound.
[Condition of type UNBOUND-VARIABLE]
| foo | это просто печатное представление для символов. 5e по умолчанию не читается как число, поэтому он является символом и может быть напечатан как | 5E |. Его можно также использовать для обозначения всех символов в символах, включая пробелы. | это символ, не так ли? - это!
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>
Обратите внимание, что Common Lisp по умолчанию использует символы верхнего регистра. Символы, прочитанные в верхнем регистре. Таким образом, символ foo читается, а затем имеет название символа «FOO». Чтобы обозначить символ строчными или смешанными буквами, можно использовать | foo |. Если вы создаете строчный символ с чем-то вроде (intern «foo»), тогда он также будет напечатан как | foo |. Если вы создадите вербальный символ с чем-то вроде (стажер «FOO»), он будет напечатан как foo. Вот почему 5е печатает как | 5E | с верхним регистром.
Если у вас есть символ, вы можете получить его имя в виде строки с помощью функции SYMBOL-NAME.
Вы можете прочитать целое число из строки с его функцией PARSE-INTEGER. У него есть параметр ключевого слова: RADIX, где вы можете предоставить основание для чтения.
CL-USER > (parse-integer (symbol-name '5e) :radix 16)
94
В противном случае используйте шестнадцатеричные числа, например # x5e, или измените базу чтения.
Frank Shearar указывает документацию в Common Lisp HyperSpec: 2.3.4 Symbols as Tokens.
Использование этих символов в качестве цитат. Он пытается интерпретировать 5e
как имя переменной. Я предполагаю, что вы действительно хотите, чтобы он интерпретировал его как шестнадцатеричный номер, поэтому он должен, вероятно, быть #x5e
.
В разделе 2.3.4 CLHS описывается синтаксис символа. –
Благодарим вас за подробный ответ. – jeon