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