在Lisp中,make-symbol
用于创建一个新的符号。而gensym
则用于创建一个唯一的符号,其名称由gensym
函数自动生成。gensym
在以下情况下可能比make-symbol
更受欢迎:
gensym
可以方便地实现这一点。例如,在以下代码中,gensym
用于创建一个唯一的符号名称:
(let ((sym (gensym)))
(print sym) ; 输出 (gensym)
(setf (symbol-value sym) 1)
(print (symbol-value sym)) ; 输出 1
)
gensym
可以方便地实现这一点。例如,在以下代码中,gensym
用于创建一个包含下划线的符号名称:
(let ((sym (gensym)))
(print sym) ; 输出 (gensym)
(setf (symbol-value sym) 1)
(print (symbol-value sym)) ; 输出 1
)
gensym
可以方便地实现这一点。例如,在以下代码中,gensym
用于创建一个唯一的符号名称,并将其用作变量:
(let ((sym (gensym)))
(print sym) ; 输出 (gensym)
(setf (symbol-value sym) 1)
(print (symbol-value sym)) ; 输出 1
)
总之,在需要确保符号名称唯一或在符号名称中包含参数或特殊字符时,gensym
可能比make-symbol
更受欢迎。此外,gensym
还可以在需要动态生成符号名称的情况下方便地实现。
领取专属 10元无门槛券
手把手带您无忧上云