gpt4 book ai didi

clojure - 为什么 Clojure 的 gensym 在每次调用时增加 3?

转载 作者:行者123 更新时间:2023-12-04 21:57:32 24 4
gpt4 key购买 nike

对 lisps 相当陌生,但在研究顺序整数生成代码时,我注意到对 (gensym) 的重复调用会将前缀后提供的数字增加 3。我很好奇为什么会这样。

user=> (gensym)
G__662
user=> (gensym)
G__665
user=> (gensym)
G__668
user=> (gensym)
G__671
user=> (gensym)
G__674
user=> (gensym)
G__677

我已经看到并理解 atom 的组合使用和 inc ,但我是 gensym 的新手功能。

最佳答案

这里有许多正确的答案。一是:没有!

user> (take 5 (repeatedly gensym))
(G__2173 G__2174 G__2175 G__2176 G__2177)

另一个是: gensym 不对它生成的符号的形式做任何保证,所以你真的不应该关心它们是否是连续的(或者即使它们包含数字)。您当然不应该劫持 gensym 来生成整数序列。

最后:为什么在你的例子中它增加了三个?因为每次对 repl 中的表单求值时,编译器都必须创建一些自己的 gensym。显然,对于表单 (gensym) ,它需要创建的数字是二。

关于clojure - 为什么 Clojure 的 gensym 在每次调用时增加 3?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23596043/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com