2015-10-10 133 views
-1

Lisp newbie here。Common Lisp:读取每个输入字符作为列表元素

我想从标准中的字符,如一串读:

aabc 

欲该输入转换成表,其中每个字符变为列表元素:

(a a b c) 

我希望将列表分配给全局变量text

我创造了这个功能:

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

但只是导致分配一个符号text,没有令牌化的输入符号列表。

什么是正确实施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中的符号不​​区分大小写,并且默认读取器会提高。

相关问题