永続的な配列を使用してユニオン検索アルゴリズムを作成しています。ここに私が使用できるいくつかの機能があります:
Array.sub : 'a array * int -> 'a
Array.update: 'a array * int * 'a -> unit
テーブルを作成する必要があります
datatype 'a table = Array of 'a Array.array | Change of int * 'a * 'a table ref
Change コンストラクターとライブラリーを使用して、一定時間内に 1 スロットだけ異なる既存のものから
Array.tabulate : int * (int-> 'a)-> 'a array
各要素が独自のパーティションであるサイズ n のテーブルへの参照を返す関数を実装します。
newTable : int -> int table ref
これが私の試みですが、私は本当に混乱しているので、助けていただければ幸いです:
fun newTable n =
if 0 = Array.sub(Array.tabulate (n,fn i => i), 0)
then ()
else
ref(Change(Array.array(n)));