(rontolisp) docs
← リファレンス

clojure.data

2 つの値を再帰的に比較する名前空間です。clojure.data を require すると使えます。Clojure の同名の 名前空間について文書化された振る舞いをもとに rontolisp 向けに書いた Clojure ソースで、すべての バックエンドで同じように動きます。

var振る舞い
diff(diff a b): [a だけにあるもの b だけにあるもの 両方にあるもの]。空の部分は nil。等しい値は [nil nil a]
equality-partition(equality-partition x): diff が x をどう比較するか。:map、:set、:sequential、:atom のいずれか
diff-similar(diff-similar a b): 同じ区分の 2 つの値の差分
EqualityPartition、Diff上の 2 つの関数のもとになるプロトコル。プログラムは自分の型に拡張できる

2 つのマップはキーごとに、2 つのシーケンシャルなコレクション(ベクタ、リスト、シーケンス)は インデックスごとに比較し、共通の位置の値はさらに再帰的に比較します。シーケンシャルな差分の各部分は、 相手側に値がある位置を nil で埋めたベクタになり、マップの差分は 3 つの部分をシーケンスとして返します。 2 つのセットは要素ごとに比較します。それ以外の値は文字列も含めて全体として比較し、区分の異なる 2 つの値も 同様です。レコードはマップとして比較します。