首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

什么时候更喜欢gensym而不是Lisp中的make-symbol

在Lisp中,make-symbol用于创建一个新的符号。而gensym则用于创建一个唯一的符号,其名称由gensym函数自动生成。gensym在以下情况下可能比make-symbol更受欢迎:

  1. 当需要在符号名称中包含参数时,gensym可以方便地实现这一点。例如,在以下代码中,gensym用于创建一个唯一的符号名称:
代码语言:txt
复制

(let ((sym (gensym)))

代码语言:txt
复制
 (print sym)  ; 输出 (gensym)
代码语言:txt
复制
 (setf (symbol-value sym) 1)
代码语言:txt
复制
 (print (symbol-value sym))  ; 输出 1

)

代码语言:txt
复制
  1. 当需要在符号名称中包含特殊字符时,gensym可以方便地实现这一点。例如,在以下代码中,gensym用于创建一个包含下划线的符号名称:
代码语言:txt
复制

(let ((sym (gensym)))

代码语言:txt
复制
 (print sym)  ; 输出 (gensym)
代码语言:txt
复制
 (setf (symbol-value sym) 1)
代码语言:txt
复制
 (print (symbol-value sym))  ; 输出 1

)

代码语言:txt
复制
  1. 当需要确保符号名称唯一时,gensym可以方便地实现这一点。例如,在以下代码中,gensym用于创建一个唯一的符号名称,并将其用作变量:
代码语言:txt
复制

(let ((sym (gensym)))

代码语言:txt
复制
 (print sym)  ; 输出 (gensym)
代码语言:txt
复制
 (setf (symbol-value sym) 1)
代码语言:txt
复制
 (print (symbol-value sym))  ; 输出 1

)

代码语言:txt
复制

总之,在需要确保符号名称唯一或在符号名称中包含参数或特殊字符时,gensym可能比make-symbol更受欢迎。此外,gensym还可以在需要动态生成符号名称的情况下方便地实现。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的沙龙

领券