INCLUDE "utils.ml"
-module type S =
-sig
- type data
- type t
- val make : data -> t
- val node : t -> data
- val hash : t -> int
- val uid : t -> int
- val equal : t -> t -> bool
-end
+module type SA =
+ sig
+ type data
+ type t
+ val make : data -> t
+ val node : t -> data
+ val hash : t -> int
+ val uid : t -> int
+ val equal : t -> t -> bool
+ end
+
+module type S =
+ sig
+ type data
+ type t = private { id : int;
+ key : int;
+ node : data }
+ val make : data -> t
+ val node : t -> data
+ val hash : t -> int
+ val uid : t -> int
+ val equal : t -> t -> bool
+ end
+
module Make (H : Hashtbl.HashedType) : S with type data = H.t =
struct
type data = H.t
- type t = { id : int;
- key : int;
- node : data;
- }
-
+ type t = { id : int;
+ key : int;
+ node : data }
let node t = t.node
let hash t = t.key
let uid t = t.id