module type S = sig
type elt
type 'a node = Nil | Cons of elt * 'a
- type t
+
+ 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 hash : t -> int
val uid : t -> int
+ val make : data -> t
val equal : t -> t -> bool
val nil : t
val node : t -> t node
val length : t -> int
end
-module Make (H : Hcons.S) : S with type elt = H.t
+module Make (H : Hcons.SA) : S with type elt = H.t