sig
type elt
- type t
+
+ type 'a node
+ module rec Node : sig
+ include Hcons.S with type data = Data.t
+ end
+ and Data : sig
+ include
+ Hashtbl.HashedType with type t = Node.t node
+ end
+ type data = Data.t
+ type t = Node.t
+
val empty : t
val is_empty : t -> bool
val mem : elt -> t -> bool
val is_singleton : t -> bool
val mem_union : t -> t -> t
val hash : t -> int
-val uid : t -> int
+val uid : t -> Uid.t
val uncons : t -> elt * t
val from_list : elt list -> t
+val make : data -> t
+val node : t -> data
+
+val with_id : Uid.t -> t
end
-module Int : S with type elt = int
-module Make ( H : Hcons.S ) : S with type elt = H.t
+module Int : sig
+ include S with type elt = int
+ val print : Format.formatter -> t -> unit
+end
+
+module Make ( H : Hcons.SA ) : S with type elt = H.t