Erlangの有向グラフモジュールは、状態を変更することで私を驚かせました。
Erlangで他のデータ構造モジュールを処理する場合、たとえば、渡されたデータ構造のインスタンスであるsetsモジュールは変更されません。この関数は、変更された新しいバージョンを返します。
>S = sets:new().
>sets:size(S).
0
>T = sets:add_element(S, "element").
>sets:size(S).
0
>sets:size(T).
1
これは、有向グラフモジュールを処理するときの動作ではありません。
>G = digraph:new().
>digraph:no_vertices(G).
0
>digraph:add_vertex(G, "vertex").
>digraph:no_vertices(G).
1
まず、この点で有向グラフライブラリが異なるのはなぜですか?
次に、さらに重要なことに、digraphモジュールは既存のバインディングに対して新しい状態をどのように追加しますか?
状態は、既存の変更されていないバインディングGを使用してdigraphモジュールが識別している別のプロセスに格納されていると思います。これは本当ですか?または、バインディングに関連付けられた状態を変更する他の方法はありますか?