X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=hlist.mli;h=9f8dfc3c7e37ec0ac43a336a1418c17fa7d4295d;hb=a223af3254fb51c279cfbccdc18c59484fdca74e;hp=15bafe550f96a1e73a937f14c598d49669423882;hpb=479afaf5e67e28ef73c0126e95ca8badec3392aa;p=SXSI%2Fxpathcomp.git diff --git a/hlist.mli b/hlist.mli index 15bafe5..9f8dfc3 100644 --- a/hlist.mli +++ b/hlist.mli @@ -1,9 +1,19 @@ 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 uid : t -> Uid.t + val make : data -> t val equal : t -> t -> bool val nil : t val node : t -> t node @@ -15,6 +25,9 @@ module type S = sig val iter : (elt -> 'a) -> t -> unit val rev : t -> t val rev_map : (elt -> elt) -> t -> t + val length : t -> int + + val with_id : Uid.t -> t end -module Make (H : Hcons.S) : S with type elt = H.t +module Make (H : Hcons.SA) : S with type elt = H.t