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