sig   module type DATA =     sig type t val equal : Qstack.DATA.t -> Qstack.DATA.t -> bool end   module Make :     functor (D : DATA->       sig         type t         exception Empty         val create : unit -> Qstack.Make.t         val singleton : D.t -> Qstack.Make.t         val is_empty : Qstack.Make.t -> bool         val clear : Qstack.Make.t -> unit         val add : D.t -> Qstack.Make.t -> unit         val add_at_end : D.t -> Qstack.Make.t -> unit         val top : Qstack.Make.t -> D.t         val mem : D.t -> Qstack.Make.t -> bool         val filter : (D.t -> bool) -> Qstack.Make.t -> D.t list         val find : (D.t -> bool) -> Qstack.Make.t -> D.t         val remove : D.t -> Qstack.Make.t -> unit         val move_at_top : D.t -> Qstack.Make.t -> unit         val move_at_end : D.t -> Qstack.Make.t -> unit         val iter : (D.t -> unit) -> Qstack.Make.t -> unit         val map : (D.t -> D.t) -> Qstack.Make.t -> unit         val fold : ('-> D.t -> 'a) -> '-> Qstack.Make.t -> 'a         val nth : int -> Qstack.Make.t -> D.t         val length : Qstack.Make.t -> int         val idx : D.t -> Qstack.Make.t -> int       end end