[m-rev.] For review 1/2: Beefed up the pqueue implementation.

Peter Wang novalazy at gmail.com
Tue Nov 26 16:15:22 AEDT 2013


On Sun, 24 Nov 2013 15:42:14 +1100, Paul Bone <paul at bone.id.au> wrote:
> +
> +:- pred pqueue.merge2(pqueue(K, V)::in, pqueue(K, V)::in, pqueue(K, V)::out)
> +    is det.
> +
> +pqueue.merge2(empty,                   B,     B).
> +pqueue.merge2(A at pqueue(_, _, _, _, _), empty, A).
> +pqueue.merge2(pqueue(_, K, V, L, R),   !.PQ at pqueue(_, _, _, _, _), !:PQ) :-
> +    pqueue.merge2(L, !PQ),
> +    pqueue.merge2(R, !PQ),
> +    pqueue.insert(K, V, !PQ).

pqueue.merge2(A, B, C) :-
    (
	A = empty,
	C = B
    ;
	A = pqueue(_, _, _, _, _),
	B = empty,
	C = A
    ;
	A = pqueue(_, K, V, L, R),
	B = pqueue(_, _, _, _, _),
	merge2(L, B, C0),
	merge2(R, C0, C1),
	insert(K, V, C1, C)
    ).

Peter



More information about the reviews mailing list