LINUX.ORG.RU

[CL] Генерирование символов


0

1

Необходимо по некоторому алгоритму создать список символов (для последуюшего скармливания их макросам). Кроме как генерирования строк с последующим преобразованием их в символы, я пути не знаю.

Для примера, что-нибудь простое и бесполезное вроде:

(loop for i from 1 to 10 collect
 (intern (concatenate 'string "hello-" (write-to-string i))))
=>
(|hello-1| |hello-2| |hello-3| |hello-4| |hello-5| |hello-6| |hello-7|
 |hello-8| |hello-9| |hello-10|)

И дальше я могу спокойно работать с |символами|. Но мне-то нужны просто символы, без палок.

Про работу с пакетами читал в пкл, кукбуке и гиперспеке, но там примеры рознятся и ничего конкретного про палки я так и не нашел...

★★★★★

создать список символов (для последуюшего скармливания их макросам)

gensym не оно?

ugoday ★★★★★
()
Ответ на: комментарий от ugoday

Не-не. Генерировать нужно самому; глупый цикл, генерирующий hello-X, просто для примера.

staseg ★★★★★
() автор топика
Ответ на: комментарий от archimag

Спасибо. А можно пояснить, почему имена символов сами не встают в верхний регистр внутри intern, а вместо этого огораживаются палками?

staseg ★★★★★
() автор топика
Ответ на: комментарий от staseg

> почему имена символов сами не встают в верхний регистр внутри intern

А почему это должно происходить? Ведь возможно написать такой вот код:

CL-USER> (defun |Моя крутая функция, которая печатает Hello| ()
           (print "Hello!"))
CL-USER> (|Моя крутая функция, которая печатает Hello|)
"Hello!" 
archimag ★★★
()
Ответ на: комментарий от archimag

Вот этот момент я совсем упустил. Большое спасибо еще раз.

staseg ★★★★★
() автор топика
Ответ на: комментарий от staseg

Ещё вставлю от себя)

Видимо раньше CL не учитывал регистр, так что 'FF и 'ff - это суть одно и то же. Сейчас же ридер просто переводит всё введенное тобой в верхний регистр.

И если ты введешь что-то типа

(symbol-name 'dd) то получишь «DD», а не «dd». Так же и с intern. Но если ты огородишь его | (multiple-escape), то перевода в верхний регистр не произойдет (они считаются как есть)

Вроде так вот)

different_thing
()
Ответ на: комментарий от different_thing

Ну да, я понял, Архимаг в принципе все хорошо объяснил.

Благодарю.

staseg ★★★★★
() автор топика
Ответ на: комментарий от different_thing

>> Видимо раньше CL не учитывал регистр

Раньше это когда???

cathode
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.