私は((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式を読み込むための2つの基本的な方法です:
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)))
神よ!それがまさに私が必要なものです。私はあまりに早くgoogleをあきらめた。ありがとう、兄さん! – user1048677