sig
  type 'a sequence = ('-> unit) -> unit
  type 'a gen = unit -> 'a option
  type 'a equal = '-> '-> bool
  type 'a ord = '-> '-> int
  type 'a printer = Format.formatter -> '-> unit
  type 'a t = unit -> [ `Cons of 'a * 'CCKList.t | `Nil ]
  val nil : 'CCKList.t
  val empty : 'CCKList.t
  val cons : '-> 'CCKList.t -> 'CCKList.t
  val singleton : '-> 'CCKList.t
  val repeat : ?n:int -> '-> 'CCKList.t
  val cycle : 'CCKList.t -> 'CCKList.t
  val unfold : ('-> ('a * 'b) option) -> '-> 'CCKList.t
  val is_empty : 'CCKList.t -> bool
  val head : 'CCKList.t -> 'a option
  val head_exn : 'CCKList.t -> 'a
  val tail : 'CCKList.t -> 'CCKList.t option
  val tail_exn : 'CCKList.t -> 'CCKList.t
  val equal : 'CCKList.equal -> 'CCKList.t CCKList.equal
  val compare : 'CCKList.ord -> 'CCKList.t CCKList.ord
  val fold : ('-> '-> 'a) -> '-> 'CCKList.t -> 'a
  val iter : ('-> unit) -> 'CCKList.t -> unit
  val iteri : (int -> '-> unit) -> 'CCKList.t -> unit
  val length : 'CCKList.t -> int
  val take : int -> 'CCKList.t -> 'CCKList.t
  val take_while : ('-> bool) -> 'CCKList.t -> 'CCKList.t
  val drop : int -> 'CCKList.t -> 'CCKList.t
  val drop_while : ('-> bool) -> 'CCKList.t -> 'CCKList.t
  val map : ('-> 'b) -> 'CCKList.t -> 'CCKList.t
  val mapi : (int -> '-> 'b) -> 'CCKList.t -> 'CCKList.t
  val fmap : ('-> 'b option) -> 'CCKList.t -> 'CCKList.t
  val filter : ('-> bool) -> 'CCKList.t -> 'CCKList.t
  val append : 'CCKList.t -> 'CCKList.t -> 'CCKList.t
  val product_with :
    ('-> '-> 'c) -> 'CCKList.t -> 'CCKList.t -> 'CCKList.t
  val product : 'CCKList.t -> 'CCKList.t -> ('a * 'b) CCKList.t
  val group : 'CCKList.equal -> 'CCKList.t -> 'CCKList.t CCKList.t
  val uniq : 'CCKList.equal -> 'CCKList.t -> 'CCKList.t
  val flat_map : ('-> 'CCKList.t) -> 'CCKList.t -> 'CCKList.t
  val filter_map : ('-> 'b option) -> 'CCKList.t -> 'CCKList.t
  val flatten : 'CCKList.t CCKList.t -> 'CCKList.t
  val range : int -> int -> int CCKList.t
  val ( -- ) : int -> int -> int CCKList.t
  val ( --^ ) : int -> int -> int CCKList.t
  val fold2 :
    ('acc -> '-> '-> 'acc) ->
    'acc -> 'CCKList.t -> 'CCKList.t -> 'acc
  val map2 : ('-> '-> 'c) -> 'CCKList.t -> 'CCKList.t -> 'CCKList.t
  val iter2 : ('-> '-> unit) -> 'CCKList.t -> 'CCKList.t -> unit
  val for_all2 : ('-> '-> bool) -> 'CCKList.t -> 'CCKList.t -> bool
  val exists2 : ('-> '-> bool) -> 'CCKList.t -> 'CCKList.t -> bool
  val merge : 'CCKList.ord -> 'CCKList.t -> 'CCKList.t -> 'CCKList.t
  val zip : 'CCKList.t -> 'CCKList.t -> ('a * 'b) CCKList.t
  val unzip : ('a * 'b) CCKList.t -> 'CCKList.t * 'CCKList.t
  val sort : ?cmp:'CCKList.ord -> 'CCKList.t -> 'CCKList.t
  val sort_uniq : ?cmp:'CCKList.ord -> 'CCKList.t -> 'CCKList.t
  val memoize : 'CCKList.t -> 'CCKList.t
  val interleave : 'CCKList.t -> 'CCKList.t -> 'CCKList.t
  val fair_flat_map : ('-> 'CCKList.t) -> 'CCKList.t -> 'CCKList.t
  val fair_app : ('-> 'b) CCKList.t -> 'CCKList.t -> 'CCKList.t
  val return : '-> 'CCKList.t
  val pure : '-> 'CCKList.t
  val ( >>= ) : 'CCKList.t -> ('-> 'CCKList.t) -> 'CCKList.t
  val ( >|= ) : 'CCKList.t -> ('-> 'b) -> 'CCKList.t
  val ( <*> ) : ('-> 'b) CCKList.t -> 'CCKList.t -> 'CCKList.t
  val ( >>- ) : 'CCKList.t -> ('-> 'CCKList.t) -> 'CCKList.t
  val ( <.> ) : ('-> 'b) CCKList.t -> 'CCKList.t -> 'CCKList.t
  module Infix :
    sig
      val ( >>= ) : 'CCKList.t -> ('-> 'CCKList.t) -> 'CCKList.t
      val ( >|= ) : 'CCKList.t -> ('-> 'b) -> 'CCKList.t
      val ( <*> ) : ('-> 'b) CCKList.t -> 'CCKList.t -> 'CCKList.t
      val ( >>- ) : 'CCKList.t -> ('-> 'CCKList.t) -> 'CCKList.t
      val ( <.> ) : ('-> 'b) CCKList.t -> 'CCKList.t -> 'CCKList.t
      val ( -- ) : int -> int -> int CCKList.t
      val ( --^ ) : int -> int -> int CCKList.t
    end
  module type MONAD =
    sig
      type 'a t
      val return : '-> 'CCKList.MONAD.t
      val ( >>= ) :
        'CCKList.MONAD.t ->
        ('-> 'CCKList.MONAD.t) -> 'CCKList.MONAD.t
    end
  module Traverse :
    functor (M : MONAD->
      sig
        val sequence_m : 'M.t CCKList.t -> 'CCKList.t M.t
        val fold_m : ('-> '-> 'M.t) -> '-> 'CCKList.t -> 'M.t
        val map_m : ('-> 'M.t) -> 'CCKList.t -> 'CCKList.t M.t
      end
  val of_list : 'a list -> 'CCKList.t
  val to_list : 'CCKList.t -> 'a list
  val of_array : 'a array -> 'CCKList.t
  val to_array : 'CCKList.t -> 'a array
  val to_rev_list : 'CCKList.t -> 'a list
  val to_seq : 'CCKList.t -> 'CCKList.sequence
  val to_gen : 'CCKList.t -> 'CCKList.gen
  val of_gen : 'CCKList.gen -> 'CCKList.t
  val pp : ?sep:string -> 'CCKList.printer -> 'CCKList.t CCKList.printer
end