【问题标题】:How to achieve Time Travel with clojure如何使用 clojure 实现时间旅行
【发布时间】:2018-03-15 21:09:59
【问题描述】:

有没有办法在 Clojure 中实现时间旅行,例如,如果我有一个向量(在内部是作为持久数据结构实现的树),有没有办法实现时间旅行并获得该向量的先前版本?就像 Datomic 在数据库级别所做的那样,因为 Clojure 和 Datomic 共享许多概念,包括作为持久数据结构实现的不可变事实,从技术上讲,旧版本的向量仍然存在。所以我想知道在普通的 Clojure 中是否可以像在数据库级别的 Datomic 中那样进行时间旅行和获取以前的版本

【问题讨论】:

标签: data-structures clojure immutability datomic


【解决方案1】:

是的,但是您需要保留对它的引用才能访问它,并防止它被垃圾收集。 Clojurists 经常以这种方式实现撤消/重做;您需要做的就是维护数据的历史状态列表,然后您可以轻松地退后一步。

David Nolen 已经描述了这种方法here,您可以找到更详细的示例和解释here

【讨论】:

    【解决方案2】:

    Datomic 是普通的 Clojure。您可以将 Datomic 用作具有内存数据库(用于版本跟踪)或根本没有数据库的 Clojure 库。

    【讨论】:

      猜你喜欢
      • 2014-10-29
      • 1970-01-01
      • 2018-12-25
      • 2016-12-02
      • 2021-09-01
      • 2023-02-20
      • 2013-12-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多