diff --git a/docs/yap.tex b/docs/yap.tex index 5f64659a8..c155b1f0d 100644 --- a/docs/yap.tex +++ b/docs/yap.tex @@ -6586,6 +6586,12 @@ stable, that is, if you insert several pairs with the same @var{Key} it is not defined which of them will come out first, and it is possible for any of them to come out first depending on the history of the heap. +@item empty_heap(?@var{Heap}) +@findex empty_heap/1 +@syindex empty_heap/1 +@cnindex empty_heap/1 +Succeeds if @var{Heap} is an empty heap. + @item get_from_heap(+@var{Heap},-@var{key},-@var{Datum},-@var{Heap}) @findex get_from_heap/4 @syindex get_from_heap/4 diff --git a/library/heaps.yap b/library/heaps.yap index f13771c1d..cf4cae0a8 100644 --- a/library/heaps.yap +++ b/library/heaps.yap @@ -43,6 +43,7 @@ :- module(heaps,[ add_to_heap/4, % Heap x Key x Datum -> Heap get_from_heap/4, % Heap -> Key x Datum x Heap + empty_heap/1, % Heap heap_size/2, % Heap -> Size heap_to_list/2, % Heap -> List list_to_heap/2, % List -> Heap @@ -95,7 +96,7 @@ add_to_heap(t(M,[H|T],OldTree), Key, Datum, t(N,T,NewTree)) :- add_to_heap(1, Key, Datum, _, t(Key,Datum,t,t)) :- !. add_to_heap(N, Key, Datum, t(K1,D1,L1,R1), t(K2,D2,L2,R2)) :- E is N mod 2, - M is N/2, + M is N//2, % M > 0, % only called from list_to_heap/4,add_to_heap/4 sort2(Key, Datum, K1, D1, K2, D2, K3, D3), add_to_heap(E, M, K3, D3, L1, R1, L2, R2). @@ -227,3 +228,6 @@ min_of_heap(t(Ka,Da,_,_), t(Kb,Db,_,_), Kb, Db) :- min_of_heap(t(Ka,Da,_,_), _, Ka, Da). min_of_heap(t, t(Kb,Db,_,_), Kb, Db). +empty_heap(t(0,[],t)). + +