1(* ========================================================================= *)
2(* A HEAP DATATYPE FOR ML                                                    *)
3(* Copyright (c) 2001 Joe Hurd, distributed under the BSD License            *)
4(* ========================================================================= *)
5
6signature Heap =
7sig
8
9type 'a heap
10
11val new : ('a * 'a -> order) -> 'a heap
12
13val add : 'a heap -> 'a -> 'a heap
14
15val null : 'a heap -> bool
16
17val top : 'a heap -> 'a  (* raises Empty *)
18
19val remove : 'a heap -> 'a * 'a heap  (* raises Empty *)
20
21val size : 'a heap -> int
22
23val app : ('a -> unit) -> 'a heap -> unit
24
25val toList : 'a heap -> 'a list
26
27val toStream : 'a heap -> 'a Stream.stream
28
29val toString : 'a heap -> string
30
31end
32