sig
  val index : '-> 'a list -> int
  val indexq : '-> 'a list -> int
  module type ComparableType =
    sig
      type t
      val compare :
        ListExtras.ComparableType.t -> ListExtras.ComparableType.t -> int
    end
  module type S =
    sig
      type t
      val index : ListExtras.S.t -> ListExtras.S.t list -> int
      val mem : ListExtras.S.t -> ListExtras.S.t list -> bool
      val assoc : ListExtras.S.t -> (ListExtras.S.t * 'a) list -> 'a
      val mem_assoc : ListExtras.S.t -> (ListExtras.S.t * 'a) list -> bool
      val remove_assoc :
        ListExtras.S.t ->
        (ListExtras.S.t * 'a) list -> (ListExtras.S.t * 'a) list
    end
  module Make :
    functor (Comp : ComparableType->
      sig
        type t = Comp.t
        val index : ListExtras.S.t -> ListExtras.S.t list -> int
        val mem : ListExtras.S.t -> ListExtras.S.t list -> bool
        val assoc : ListExtras.S.t -> (ListExtras.S.t * 'a) list -> 'a
        val mem_assoc : ListExtras.S.t -> (ListExtras.S.t * 'a) list -> bool
        val remove_assoc :
          ListExtras.S.t ->
          (ListExtras.S.t * 'a) list -> (ListExtras.S.t * 'a) list
      end
  val munge : cmp:('-> '-> int) -> f:('-> 'a) -> 'b list -> 'b list
  val stable_munge :
    cmp:('-> '-> int) -> f:('-> 'a) -> 'b list -> 'b list
  val fast_munge :
    cmp:('-> '-> int) -> f:('-> 'a) -> 'b list -> 'b list
  val car : 'a list -> 'a
  val cdr : 'a list -> 'a list
  val cadr : 'a list -> 'a
  val cddr : 'a list -> 'a list
  val caddr : 'a list -> 'a
  val cdddr : 'a list -> 'a list
  val cadddr : 'a list -> 'a
  val cddddr : 'a list -> 'a list
  val tail : 'a list -> int -> 'a list
end