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