現在、scala.collection.mutable.PriorityQueue を使用して要素を特定の順序で結合するメソッドがあります。たとえば、コードは次のようになります。
def process[A : Ordering](as: Set[A], f: (A, A) => A): A = {
val queue = new scala.collection.mutable.PriorityQueue[A]() ++ as
while (queue.size > 1) {
val a1 = queue.dequeue
val a2 = queue.dequeue
queue.enqueue(f(a1, a2))
}
queue.dequeue
}
コードは書かれたとおりに機能しますが、必然的にかなり必須です。私は PriorityQueue の代わりに SortedSet を使用することを考えましたが、私の試みはプロセスをより複雑に見せます。私がやりたいことを行うための、より宣言的で簡潔な方法は何ですか?