我有一個字符串,其中包含一個像((p X) (q (f X)))
這樣的列表結構,我真的很想找到一個函數,將該字符串解釋/轉換爲列表列表,就像它是一個'((p X) (q (f X)))
。如何將字符串解析爲列表結構?
(list "((p X) (q (f X)))")
只是使其成爲單個元素列表。
(intern "((p X) (q (f X)))")
將其封入|符號。
我有一個字符串,其中包含一個像((p X) (q (f X)))
這樣的列表結構,我真的很想找到一個函數,將該字符串解釋/轉換爲列表列表,就像它是一個'((p X) (q (f X)))
。如何將字符串解析爲列表結構?
(list "((p X) (q (f X)))")
只是使其成爲單個元素列表。
(intern "((p X) (q (f X)))")
將其封入|符號。
"((p X) (q (f X)))"
是Lisp中的一個字符串。字符串被包含在"
中。
LIST
以其參數爲元素創建一個列表。
所以(list "((p X) (q (f X)))")
用字符串作爲元素創建一個列表。
INTERN
創建符號。
(intern "((p X) (q (f X)))")
用字符串參數作爲名稱創建一個符號。在Common Lisp中,符號可以具有任意名稱,甚至包括(
和)
等字符。這些符號印在|
之間。例如:|((p X) (q (f X)))|
是一個具有如此奇怪名稱的符號。
解析s表達式在Lisp中被稱爲,讀取。例如READ
和READ-FROM-STRING
。
有讀取S-表達的兩種基本方式:
CL-USER 1 > (read-from-string "((p X) (q (f X)))")
((P X) (Q (F X)))
17
但你也可以使用WITH-INPUT-FROM-STRING
打開基於字符串輸入流,然後使用普通READ
:
CL-USER 2 > (with-input-from-string (stream "((p X) (q (f X)))")
(read stream))
((P X) (Q (F X)))
他媽的!這正是我需要的。我太早放棄谷歌了。兄弟,非常感謝! – user1048677