2

例如,如果我有原子'ABCD,有没有办法确定组成原子的各个字符?

4

2 回答 2

11

这些字符不“组成一个原子”(一个原子是不同的东西;大致“不是一个列表”)。

你所拥有的就是一个符号。一个符号有一个名称,它被引用。您可以使用以下函数获取符号的名称symbol-name

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

(请注意,两者symbol-nameABCD表示符号,但symbol-name被评估,而ABCD不是由于引用——上面的读法与 相同(symbol-name (quote ABCD))。)

符号还具有其他属性,您可以通过函数symbol-packagesymbol-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 回答