差异
矢量和地图的 Clojure(Script) 差异和补丁实现。
在 project.clj 中包含如上所示的依赖项
Diff 计算编辑距离和最小编辑脚本,以通过补丁将第一个集合转换为第二个集合。 基于向量的差异实现遵循 Wu、Manber、Myers 和 Miller 。
为什么
基于向量的实现的明显应用是由字符串序列表示的文本文件的差异和补丁。
另一个可能是希望将数据转换的最终结果(由无副作用函数组成)与由昂贵的基于突变的 API 包装的状态同步,例如绑定的 JavaFX ObservableList。 带有可配置补丁的快速差异是解决此问题的一种方法。
第 3 种情况可能是需要将最少量的数据更改传输到远程进程以进行进一步处理。
有clojure.data/diff但它并不完全符合我的想法,如下面的 REPL 输出所示:
( clojure.data/diff [ 1 2