2

たとえば、アトム 'ABCD がある場合、アトムを構成する個々の文字を特定する方法はありますか?

4

2 に答える 2

11

これらの文字は「アトムを構成する」わけではありません (アトムは別のものであり、大まかに「リストではありません」)。

あなたが持っているのはシンボルです。シンボルには名前があり、それによって参照されます。次の関数でシンボルの名前を取得できますsymbol-name

CL-USER > (symbol-name 'ABCD)
=> "ABCD"

(両方ともsymbol-nameABCDは記号を示しますが、symbol-nameは評価されますABCDが、 は引用によるものではないことに注意してください。上記は と同じように読みます(symbol-name (quote ABCD))。)

symbol-packageシンボルには、関数、symbol-plistsymbol-value、またはで取得できる他のプロパティもありますsymbol-function

概要については、Hyperspec の第 10 章をご覧ください。

于 2012-09-11T19:09:03.353 に答える
4

シンボル内の文字のリストを取得するには:

(coerce (string 'ABCD) 'list) ; => (#\A #\B #\C #\D)

最初にシンボルを変換すれば、シンボルに対してあらゆる種類の通常の文字列分析を実行できます。

(string 'ABCD)                ; => "ABCD"
(char (string 'ABCD) 0)       ; => #\A
(subseq (string 'ABCD) 0 2)   ; => "AB"
于 2012-09-11T14:16:59.863 に答える