당신은 또 다른 라이브러리로 (또는 다른 지원 프롤로그 컴파일러) XSB에서 Logtalk를 사용하고 일반 프롤로그에서 자원을 호출 할 수 있습니다 또는 프롤로그 모듈로부터. Logtalk의 힙 라이브러리 지원에 관해서는 실제로 원래의 Richard O'Keefe 코드를 기반으로하지만 (설명서에 명시된대로) 최소 힙과 최대 힙을 모두 제공하도록 향상되었습니다. 힙 인터페이스는 예를 들어 브라우징 될 수있다. 여기 :
http://logtalk.org/library/heapp_0.html
http://logtalk.org/library/heap_1.html
간단한 사용 예 :
?- heap(<)::(new(Heap), insert_all([1-a,4-d,2-b,5-e,6-f,3-c,7-g], Heap, UpdatedHeap), top(UpdatedHeap, Key, Value)).
Heap = t(0, [], t),
UpdatedHeap = t(7, [], t(1, a, t(3, c, t(5, e, t, t), t(4, d, t, t)), t(2, b, t(6, f, t, t), t(7, g, t, t)))),
Key = 1,
Value = a.
?- heap(>)::(new(Heap), insert_all([1-a,4-d,2-b,5-e,6-f,3-c,7-g], Heap, UpdatedHeap), top(UpdatedHeap, Key, Value)).
Heap = t(0, [], t),
UpdatedHeap = t(7, [], t(7, g, t(4, d, t(1, a, t, t), t(3, c, t, t)), t(6, f, t(2, b, t, t), t(5, e, t, t)))),
Key = 7,
Value = g.
하나주의, 그러나. ::/2 호출은 Logtalk 오브젝트 (또는 Logtalk 카테고리) 내에서 작성된 경우에만 일반 Prolog와 비교하여 성능을 제공합니다. 최상위 인터프리터 또는 Prolog 모듈 내에서 쿼리가 해석되어 (컴파일시 메시지가 해석되는) 컴파일되는 대신 메시지가 런타임에 해석된다는 의미입니다. 성능 적중 여부는 애플리케이션에서 의미가 있는지 여부 만 알 수 있습니다 (용어 확장을 지원하는 Prolog 컴파일러에서는 모듈 내에서의 ::/2 호출에 대한 성능 저하를 쉽게 줄일 수 있음).