sig
  type 'a t
  val to_list : 'Dlist.t -> 'a list
  val of_list : 'a list -> 'Dlist.t
  val of_dlist : 'Dlist.t -> 'Dlist.t
  val empty : unit -> 'Dlist.t
  val append : 'Dlist.t -> 'Dlist.t -> 'Dlist.t
  val concat : 'Dlist.t list -> 'Dlist.t
  val length : 'Dlist.t -> int
  val rev : 'Dlist.t -> 'Dlist.t
  val hd : 'Dlist.t -> 'a option
  val hd_exn : 'Dlist.t -> 'a
  val tl : 'Dlist.t -> 'Dlist.t option
  val tl_exn : 'Dlist.t -> 'Dlist.t
  val nth : 'Dlist.t -> int -> 'a option
  val nth_exn : 'Dlist.t -> int -> 'a
  val fold : 'Dlist.t -> init:'acc -> f:('acc -> '-> 'acc) -> 'acc
  val fold_left : 'Dlist.t -> init:'acc -> f:('acc -> '-> 'acc) -> 'acc
  val fold_right : 'Dlist.t -> init:'acc -> f:('-> 'acc -> 'acc) -> 'acc
  val foldi :
    'Dlist.t -> init:'acc -> f:(int -> 'acc -> '-> 'acc) -> 'acc
  val map : 'Dlist.t -> f:('-> 'b) -> 'Dlist.t
  val mapi : 'Dlist.t -> f:(int -> '-> 'b) -> 'Dlist.t
  val map2 : 'Dlist.t -> 'Dlist.t -> f:('-> '-> 'c) -> 'Dlist.t
  val iter : 'Dlist.t -> f:('-> unit) -> unit
  val iteri : 'Dlist.t -> f:(int -> '-> unit) -> unit
end