你能在Clojure中看到原子的先前值吗?

“Clojure 形而上学将身份解释为我们人类强加于一个过程随时间产生的一系列不变价值的东西”。

(希金斯沃思,2015 年 10 月)

如果这是真的,如果身份环绕所有这些状态,那么我应该能够做这样的事情。

user=> (def wow (atom 1))
#'user/wow
user=> (swap! wow (fn [cur] "You say 'Hello'."))
"You say 'Hello'."
user=> (swap! wow (fn [cur] "I say 'Goodbye'."))
"I say 'Goodbye'."
user=> (swap! wow (fn [cur] "Hello, hello!"))
"Hello, hello!"

; Can I do this?
user=> (get-old-atom-state wow 0)
1
(get-old-atom-state wow 1)
"You say 'Hello'"

是这样吗?或者,如果不使用,Clojure 实际上是否会 GC 旧值?

回答

如果这是真的,如果身份环绕所有这些状态,那么我应该能够做这样的事情。

从哲学上讲,我真的看不出有任何理由来说明这个“应该”。“Aaron Bell”是一个身份,涵盖了你过去所处的许多状态,但我无法与任何过去的状态互动,甚至无法观察。我了解其中任何一个的唯一方法是,是否有人观察过它们并将这些观察结果写在某个我可以参考的不可变对象中。

Clojure 的身份行为方式相同:您可以随时拍摄快照,完成后,您可以随时查看该快照。但是没有人看过的状态永远丢失了。

  • "I thought, therefore I was" - the identity formerly known as René Descartes

以上是你能在Clojure中看到原子的先前值吗?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>