在Common Lisp程序中,我想找到一种方法来生成当时未在程序中使用的新符号.我知道(gensym)函数,但这会产生可能已存在于程序中的符号.我有一些理解,我需要实习符号,所以我尝试了这个:
(defun new-symbol () (intern (symbol-name (gensym))))
Run Code Online (Sandbox Code Playgroud)
这似乎得到了答案的一半.例如,
[1]> (new-symbol)
G3069
NIL
[2]> (new-symbol)
G3070
NIL
[3]> (defvar a 'G3071)
A
[4]> (new-symbol)
G3071
:INTERNAL
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,该函数似乎认识到符号'G3071'已经在其他地方使用,但我不知道如果是这样的话,如何生成新符号.