2015-10-10 1 views
-1

Lisp новичок здесь.Common Lisp: читать каждый входной символ как элемент списка

Я хочу прочитать от стандарта в виде строки символов, таких как:

aabc 

Я хочу, чтобы преобразовать этот вход в список, где каждый символ становится элементом списка:

(a a b c) 

И я хочу, чтобы список был присвоен глобальной переменной, text.

Я создал эту функцию:

(defun get-line() 
    (setf text (read))) 

но это только приводит к назначая одного символа text, не tokenizing входа в список символов.

Каков правильный способ реализации get-line(), пожалуйста?

+1

Вы хотите, чтобы эти символы были атомами или символами? – tobyodavies

+0

Каждый символ должен стать атомом. –

+1

Действительно ли это событие? – tobyodavies

ответ

1

Здесь вы идете: Во-первых, используя принуждать преобразовать строку в списке символов, то MAPCAR для преобразования каждого символа в строку.

(defun get-line() 
    (setf text (mapcar 'string (coerce (string (read)) 'list)))) 
1
(loop 
    for x = (string-upcase (string (read-char))) 
    while (not (equal " " x)) 
    collecting (intern x)) 

Обратите внимание на то, что символы в CL не чувствительны к регистру и по умолчанию считываются считывателем.

Смежные вопросы