Add new hlist module
[SXSI/xpathcomp.git] / hlist.mli
1 module type S = sig
2   type elt 
3   type 'a node = Nil | Cons of elt * 'a
4   type t
5   val hash : t -> int
6   val uid : t -> int
7   val equal : t -> t -> bool
8   val nil : t
9   val node : t -> t node
10   val cons : elt -> t -> t
11   val hd : t -> elt
12   val tl : t -> t
13   val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
14   val map : (elt -> elt) -> t -> t
15   val iter : (elt -> 'a) -> t -> unit
16   val rev : t -> t
17   val rev_map : (elt -> elt) -> t -> t
18 end
19
20 module Make (H : Hcons.S) : S with type elt = H.t