如何使用clojure实现时间旅行

如何使用clojure实现时间旅行,clojure,Clojure,在clojure中是否有实现时间旅行的方法,例如,如果我有一个向量(在内部是一个持久化数据结构的树),是否有实现时间旅行和获取原始版本的方法?datomic在数据库级别所做的工作,因为clojure和datomic有许多概念,包括使用持久数据结构实现的不变性,从技术上讲,向量的旧版本仍然存在,si我想知道时间旅行和获取以前的版本是否可能,就像在数据库级别使用Datomic一样是的,但是您需要保留对它的引用,以便访问它,并防止它被垃圾收集。克隆法学家通常以这种方式实现撤销/重做;您所需要做的就是维

在clojure中是否有实现时间旅行的方法,例如,如果我有一个向量(在内部是一个持久化数据结构的树),是否有实现时间旅行和获取原始版本的方法?datomic在数据库级别所做的工作,因为clojure和datomic有许多概念,包括使用持久数据结构实现的不变性,从技术上讲,向量的旧版本仍然存在,si我想知道时间旅行和获取以前的版本是否可能,就像在数据库级别使用Datomic一样

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


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

这与您几天前提出的问题基本相同吗?可能是重复的