Lisp newbie here。Common Lisp:读取每个输入字符作为列表元素
我想从标准中的字符,如一串读:
aabc
欲该输入转换成表,其中每个字符变为列表元素:
(a a b c)
我希望将列表分配给全局变量text
。
我创造了这个功能:
(defun get-line()
(setf text (read)))
但只是导致分配一个符号text
,没有令牌化的输入符号列表。
什么是正确实施get-line()
的方式?
Lisp newbie here。Common Lisp:读取每个输入字符作为列表元素
我想从标准中的字符,如一串读:
aabc
欲该输入转换成表,其中每个字符变为列表元素:
(a a b c)
我希望将列表分配给全局变量text
。
我创造了这个功能:
(defun get-line()
(setf text (read)))
但只是导致分配一个符号text
,没有令牌化的输入符号列表。
什么是正确实施get-line()
的方式?
在这里你去:首先使用裹胁的字符串转换为字符的列表,然后mapcar每个字符转换为字符串。
(defun get-line()
(setf text (mapcar 'string (coerce (string (read)) 'list))))
(loop
for x = (string-upcase (string (read-char)))
while (not (equal " " x))
collecting (intern x))
请注意,由于CL中的符号不区分大小写,并且默认读取器会提高。
你想要那些字符作为原子或字符吗? – tobyodavies
每个字符应该成为一个原子。 –
是否有意义? – tobyodavies