openlang

получение symbol-name с исходным регистром

Можно ли в Common Lisp получить результат symbol-name, который не преобразован в верхний регистр?

(symbol-name 'cCdD)
;; => "CCDD"

(ANOTHER_FUNCTION? 'cCdD)
;; => "cCdD"

Хочу использовать имя символа в виде строки, сохраняя регистр букв.

Переведено с английскогоПоказать оригинал

Разговор продолжается 2

Следуя доводам
  1. Ссылка на ответ

    Имя символа действительно записано в верхнем регистре, поскольку reader уже выполнил преобразование. Чтобы избежать этого, измените readtable-case или экранируйте символ, заключив его в вертикальные черты: '|cCdD| либо экранируя следующий символ обратной косой чертой: '\cC\dD.

    Переведено с английскогоПоказать оригинал
  2. Ссылка на ответ

    В этом вопросе есть довольно подробное объяснение: Почему Common Lisp не учитывает регистр букв (https://stackoverflow.com/questions/7375537/why-is-common-lisp-case-insensitive)

    «У объекта readtable есть атрибут readtable-case, определяющий обработку символов reader при интернировании и вычислении. через setf можно присвоить readtable-case значения :upcase(default), :downcase, :preserve или :invert.

    Значение readtable-case по умолчанию — :upcase, поэтому reader переводит в верхний регистр каждый встретившийся символ.»

    Переведено с английскогоПоказать оригинал

Другие стороны того же вопроса

  1. Как экранировать проценты при вызове String.Format?

    В файле strings.xml у меня хранится SQL-запрос, и я пытаюсь построить итоговую строку в коде через String.Format. Запрос SELE…

    Ответы 3Последняя активность java
  2. Форматирование строк в F#

    Впервые делаю библиотеку на F# При использовании string.Format получаю сообщение, что такой функции не существует. Я что-то д…

    Ответы 2Последняя активность fsharp
  3. Извлечение одной части строки в tcl

    В tcl я пытаюсь разделить Reports/Report#2.rpt и оставить только Report#2.rpt ; попробовал такой способ, но при выполнении он…

    Ответы 2Последняя активность tcl