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