X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=hlist.mli;h=9f8dfc3c7e37ec0ac43a336a1418c17fa7d4295d;hb=0c2338bfcdae0df1c68112a10247dc4e68a483ff;hp=7796833a201b1a6f7330a2308c82e1c76d8a5d52;hpb=451e60ad59e35344dff62da5ca27fcd5eec1bff9;p=SXSI%2Fxpathcomp.git diff --git a/hlist.mli b/hlist.mli index 7796833..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 @@ -16,6 +26,8 @@ module type S = sig 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