gpt4 book ai didi

java - 在 clojure 中, (= 'a ' a) 指的是 'same atom' 吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:38:42 25 4
gpt4 key购买 nike

在 Common LISP 的某些实现中,我们可以说对于以下表达式

(eq 'a 'a)

true 因为 'a'a 是“同一个原子”。

这可能取决于具体实现,但似乎该短语(在流行的 LISP 教学书中使用)假定具有相同值的原子存储在内存中的相同位置。

在 Java 中,两个具有相同值的 interned 字符串存储在内存中的相同位置。

现在 JVM 上的 Clojure 继承了 Java 的遗产,但是说 Clojure(在 JVM 上)中具有相同值的两个原子是同一个原子是真的吗? (即Clojure的原子存储机制是如何工作的?)

最佳答案

首先,“原子”在 Clojure 中的含义与在大多数其他 Lisp 语言中的含义不同。参见 http://clojure.org/atoms

Clojure 的= 函数使用基于 的相等性。所以两个具有相等值的对象将是 =,即使它们存储在内存中的不同位置也是如此。

要测试两个对象是否实际上是同一个对象,位于内存中的相同地址,请使用 identical? 函数。

关于java - 在 clojure 中, (= 'a ' a) 指的是 'same atom' 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3657118/

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