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