Common Lisp:将每个输入字符读取为列表元素
Common Lisp: read each input character as a list element
这里是 Lisp 新手。
我想从standard-in读取一串字符如:
aabc
我想将该输入转换为一个列表,其中每个字符都成为一个列表元素:
(a a b c)
我想将列表分配给一个全局变量,text
。
我创建了这个函数:
(defun get-line ()
(setf text (read)))
但这只会导致将单个符号分配给 text
,而不是将输入标记为符号列表。
请问 get-line()
的正确实施方式是什么?
(loop
for x = (string-upcase (string (read-char)))
while (not (equal " " x))
collecting (intern x))
请注意大写是因为 CL 中的符号不区分大小写并且默认情况下由 reader 大写。
开始:首先使用 coerce 将字符串转换为字符列表,然后 mapcar 将每个字符转换为字符串.
(defun get-line ()
(setf text (mapcar 'string (coerce (string (read)) 'list))))
这里是 Lisp 新手。
我想从standard-in读取一串字符如:
aabc
我想将该输入转换为一个列表,其中每个字符都成为一个列表元素:
(a a b c)
我想将列表分配给一个全局变量,text
。
我创建了这个函数:
(defun get-line ()
(setf text (read)))
但这只会导致将单个符号分配给 text
,而不是将输入标记为符号列表。
请问 get-line()
的正确实施方式是什么?
(loop
for x = (string-upcase (string (read-char)))
while (not (equal " " x))
collecting (intern x))
请注意大写是因为 CL 中的符号不区分大小写并且默认情况下由 reader 大写。
开始:首先使用 coerce 将字符串转换为字符列表,然后 mapcar 将每个字符转换为字符串.
(defun get-line ()
(setf text (mapcar 'string (coerce (string (read)) 'list))))