dromozoa-serializer

リンク

テーブルの等価

テーブル参照のキーが存在し、テーブル参照が循環する場合、等価性は容易に判定できない。 そこで、テーブルを有向グラフととらえて、グラフ同型ならば等価であるとみなすことにする。

この規則のもとでは、次のテーブルabは等価でない。

local a = { { 42 }, { 42 } }

local t = { 42 }
local b = { t, t }

なお、テーブル参照のキーが存在し、テーブル参照が循環する状況は一般的でない(弱参照を用いてキャッシュ機構を実装する場合が思いうかぶが、そのような場合に等価性を判定したいだろうか?)。 そのため、ほとんどの場合、グラフサイズは非常に小さいと仮定できる。 グラフ同型の判定のための良く知られたアルゴリズムが存在するが、非効率な実装であっても問題はないとする。