`sig
type +'a t
val nil : 'a Cf_deque.t
val empty : 'a Cf_deque.t -> bool
module type Direction_T =
sig
val push : 'a -> 'a Cf_deque.t -> 'a Cf_deque.t
val pop : 'a Cf_deque.t -> ('a * 'a Cf_deque.t) option
val head : 'a Cf_deque.t -> 'a
val tail : 'a Cf_deque.t -> 'a Cf_deque.t
val fold : ('b -> 'a -> 'b) -> 'b -> 'a Cf_deque.t -> 'b
val of_list : 'a list -> 'a Cf_deque.t
val of_seq : 'a Cf_seq.t -> 'a Cf_deque.t
val to_list : 'a Cf_deque.t -> 'a list
val to_seq : 'a Cf_deque.t -> 'a Cf_seq.t
val to_seq2 : 'a Cf_deque.t -> ('a * 'a Cf_deque.t) Cf_seq.t
end
module A : Direction_T
module B : Direction_T
val iterate : ('a -> unit) -> 'a Cf_deque.t -> unit
val predicate : ('a -> bool) -> 'a Cf_deque.t -> bool
val filter : ('a -> bool) -> 'a Cf_deque.t -> 'a Cf_deque.t
val map : ('a -> 'b) -> 'a Cf_deque.t -> 'b Cf_deque.t
val optmap : ('a -> 'b option) -> 'a Cf_deque.t -> 'b Cf_deque.t
val listmap : ('a -> 'b list) -> 'a Cf_deque.t -> 'b Cf_deque.t
val seqmap : ('a -> 'b Cf_seq.t) -> 'a Cf_deque.t -> 'b Cf_deque.t
val partition :
('a -> bool) -> 'a Cf_deque.t -> 'a Cf_deque.t * 'a Cf_deque.t
val length : 'a Cf_deque.t -> int
val catenate : 'a Cf_deque.t -> 'a Cf_deque.t -> 'a Cf_deque.t
end`