【发布时间】:2016-02-11 21:31:06
【问题描述】:
在一个 Common Lisp 程序中,我想找到一种方法来生成一个当时程序中没有使用的新符号。我知道 (gensym) 函数,但这会使程序中可能已经存在的符号。我知道我需要实习符号,所以我尝试了这个:
(defun new-symbol () (intern (symbol-name (gensym))))
这似乎得到了一半的答案。例如,
[1]> (new-symbol)
G3069
NIL
[2]> (new-symbol)
G3070
NIL
[3]> (defvar a 'G3071)
A
[4]> (new-symbol)
G3071
:INTERNAL
如您所见,该函数似乎识别出符号“G3071”已在其他地方使用,但如果是这种情况,我不知道如何让它生成一个新符号。
【问题讨论】:
标签: common-lisp symbols