static void Main(string[] args) { Tuple[] ins = { new Tuple(3u, "Clear drains"), new Tuple(4u, "Feed cat"), new Tuple(5u, "Make tea"), new Tuple(1u, "Solve RC tasks"), new Tuple(2u, "Tax return") }; var spq = ins.Aggregate(MinHeapPQ.empty, (pq, t) => MinHeapPQ.push(t.Item1, t.Item2, pq)); foreach (var e in MinHeapPQ.toSeq(spq)) Console.WriteLine(e); Console.WriteLine(); foreach (var e in MinHeapPQ.sort(ins)) Console.WriteLine(e); Console.WriteLine(); var npq = MinHeapPQ.fromSeq(ins); foreach (var e in MinHeapPQ.toSeq(MinHeapPQ.merge(npq, npq))) Console.WriteLine(e); Console.WriteLine(); var npq = MinHeapPQ.fromSeq(ins); foreach (var e in MinHeapPQ.toSeq(MinHeapPQ.merge(npq, npq))) Console.WriteLine(e); foreach (var e in MinHeapPQ.toSeq(MinHeapPQ.adjust((k, v) => new Tuple(6u - k, v), npq))) Console.WriteLine(e); Console.WriteLine(); }