module Linq: CCLinqtype'asequence =('a -> unit) -> unit
type'aequal ='a -> 'a -> bool
type'aord ='a -> 'a -> int
type'ahash ='a -> int
type'awith_err =[ `Error of string | `Ok of 'a ]
module PMap:sig..end
type 'a t
val empty : 'a tval start : 'a -> 'a t
val return : 'a -> 'a tval of_list : 'a list -> 'a tval of_array : 'a array -> 'a t
val of_array_i : 'a array -> (int * 'a) t
val range : int -> int -> int trange i j goes from i up to j includedval (--) : int -> int -> int tCCLinq.rangeval of_hashtbl : ('a, 'b) Hashtbl.t -> ('a * 'b) t
val of_seq : 'a sequence -> 'a tval of_queue : 'a Queue.t -> 'a t
val of_stack : 'a Stack.t -> 'a t
val of_string : string -> char tval run : ?limit:int -> 'a t -> 'a sequencelimit : max number of values to returnval run1 : 'a t -> 'aNot_found if the query succeeds with 0 elementval run_no_optim : ?limit:int -> 'a t -> 'a sequenceval map : ('a -> 'b) -> 'a t -> 'b tval (>|=) : 'a t -> ('a -> 'b) -> 'b tCCLinq.mapval filter : ('a -> bool) -> 'a t -> 'a tval size : 'a t -> int tsize t returns one value, the number of items returned by tval choose : 'a t -> 'a tval filter_map : ('a -> 'b option) -> 'a t -> 'b tval flat_map : ('a -> 'b sequence) -> 'a t -> 'b tCCLinq.flat_map but using sequencesval flat_map_l : ('a -> 'b list) -> 'a t -> 'b tval flatten : 'a list t -> 'a t
val flatten_seq : 'a sequence t -> 'a t
val take : int -> 'a t -> 'a tn elementsval take_while : ('a -> bool) -> 'a t -> 'a tval sort : ?cmp:'a ord -> unit -> 'a t -> 'a tval distinct : ?cmp:'a ord -> unit -> 'a t -> 'a tval group_by : ?cmp:'b ord ->
?eq:'b equal ->
?hash:'b hash ->
('a -> 'b) -> 'a t -> ('b, 'a list) PMap.t tgroup_by f takes a collection c as input, and returns
a multimap m such that for each x in c,
x occurs in m under the key f x. In other words, f is used
to obtain a key from x, and x is added to the multimap using this key.val group_by' : ?cmp:'b ord ->
?eq:'b equal ->
?hash:'b hash -> ('a -> 'b) -> 'a t -> ('b * 'a list) t
val count : ?cmp:'a ord ->
?eq:'a equal ->
?hash:'a hash ->
unit -> 'a t -> ('a, int) PMap.t tcount c returns a map from elements of c to the number
of time those elements occur.val count' : ?cmp:'a ord -> unit -> 'a t -> ('a * int) t
val fold : ('b -> 'a -> 'b) -> 'b -> 'a t -> 'b tval reduce : ('a -> 'b) -> ('a -> 'b -> 'b) -> ('b -> 'c) -> 'a t -> 'c treduce start mix stop q uses start on the first element of q,
and combine the result with following elements using mix. The final
value is transformed using stop.val is_empty : 'a t -> bool t
val sum : int t -> int t
val contains : ?eq:'a equal -> 'a -> 'a t -> bool t
val average : int t -> int t
val max : int t -> int t
val min : int t -> int t
val for_all : ('a -> bool) -> 'a t -> bool t
val exists : ('a -> bool) -> 'a t -> bool t
val find : ('a -> bool) -> 'a t -> 'a option t
val find_map : ('a -> 'b option) -> 'a t -> 'b option tval join : ?cmp:'key ord ->
?eq:'key equal ->
?hash:'key hash ->
('a -> 'key) ->
('b -> 'key) ->
merge:('key -> 'a -> 'b -> 'c option) ->
'a t -> 'b t -> 'c tjoin key1 key2 ~merge is a binary operation
that takes two collections a and b, projects their
elements resp. with key1 and key2, and combine
values (x,y) from (a,b) with the same key
using merge. If merge returns None, the combination
of values is discarded.val group_join : ?cmp:'a ord ->
?eq:'a equal ->
?hash:'a hash ->
('b -> 'a) ->
'a t -> 'b t -> ('a, 'b list) PMap.t tgroup_join key2 associates to every element x of
the first collection, all the elements y of the second
collection such that eq x (key y)val product : 'a t -> 'b t -> ('a * 'b) tval append : 'a t -> 'a t -> 'a tval inter : ?cmp:'a ord ->
?eq:'a equal ->
?hash:'a hash -> unit -> 'a t -> 'a t -> 'a tval union : ?cmp:'a ord ->
?eq:'a equal ->
?hash:'a hash -> unit -> 'a t -> 'a t -> 'a tval diff : ?cmp:'a ord ->
?eq:'a equal ->
?hash:'a hash -> unit -> 'a t -> 'a t -> 'a tval fst : ('a * 'b) t -> 'a t
val snd : ('a * 'b) t -> 'b t
val map1 : ('a -> 'b) -> ('a * 'c) t -> ('b * 'c) t
val map2 : ('a -> 'b) -> ('c * 'a) t -> ('c * 'b) t
val flatten_opt : 'a option t -> 'a tval pure : 'a -> 'a tCCLinq.returnval app : ('a -> 'b) t -> 'a t -> 'b tval (<*>) : ('a -> 'b) t -> 'a t -> 'b tCCLinq.app
Careful, those operators do not allow any optimization before running the
query, they might therefore be pretty slow.
val bind : ('a -> 'b t) -> 'a t -> 'b tval (>>=) : 'a t -> ('a -> 'b t) -> 'b tCCLinq.bindval lazy_ : 'a lazy_t t -> 'a t
val opt_unwrap : 'a option t -> 'a t
val reflect : 'a t -> 'a sequence treflect q evaluates all values in q and returns a sequence
of all those values. Also blocks optimizationsmodule Infix:sig..end
val to_seq : 'a t -> 'a sequence tval to_hashtbl : ('a * 'b) t -> ('a, 'b) Hashtbl.t tval to_queue : 'a t -> 'a Queue.t t
val to_stack : 'a t -> 'a Stack.t t
module List:sig..end
module Array:sig..end
module AdaptSet(S:Set.S):sig..end
module AdaptMap(M:Map.S):sig..end
module IO:sig..end