※を満たすために, を求める際に, 「 と が求 まるまで待つ」という生産者消費者同期を行なった上で, データが到着しだい それらを用いて を求める. 最初に異なるkに対する を, 逐次に処理するversionを示す. 疑似コードで書くと図5.4のようになる.
ただし, 上の5行目,
foreach i < k < jに関して, kを処理する順序は, [2] において提案されている順序づけで, 以下のようで あるとする.
つまり,i < k < jなるk全てに対して を計算するが, その時に k = (i+j)/2付近のkから順に始め, 両端, つまり, や を最後に求めるようにする.
上のアルゴリズムにおいて, の要素としては,
となり, であるものは排除している. これは同じ記号を に複数 入れないようにするための処理を, を求める時点で行なっている ことになる. その結果, 最終的に に入らないものはいち早く捨てら れ, 無駄なデータの生成(集合をlistで表現する場合には, cons)がさけられ, かつ, を にmergeする時に, 余分な検査がいらなくなる. これは複数のkに対する処理を逐次的に行なうことに依存しており, kのルー プを並列化したい場合には変更の必要がある.