2015-10-10 96 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中的符號不​​區分大小寫,並且默認讀取器會提高。

相關問題