package core_kernel
Module Core_kernel.Container
Provides generic signatures for container data structures.
These signatures include functions (iter, fold, exists, for_all, ...) that you would expect to find in any container. Used by including Container.S0 or Container.S1 in the signature for every container-like data structure (Array, List, String, ...) to ensure a consistent interface.
These signatures extend signatures exported by Base.Container_intf.
include module type of struct include Base.Container end
module Continue_or_stop = Base.Container.Continue_or_stopContinue_or_stop.t is used by the f argument to fold_until in order to indicate whether folding should continue, or stop early.
module type S0 = Base.Container.S0module type S0_phantom = Base.Container.S0_phantommodule type S1 = Base.Container.S1module type S1_phantom_invariant = Base.Container.S1_phantom_invariantmodule type S1_phantom = Base.Container.S1_phantommodule type Generic = Base.Container.Genericmodule type Generic_phantom = Base.Container.Generic_phantommodule type Summable = Base.Container.SummableGeneric definitions of container operations in terms of fold.
E.g.: iter ~fold t ~f = fold t ~init:() ~f:(fun () a -> f a).
val count : fold:('t, 'a, int) fold -> 't -> f:('a -> bool) -> intval min_elt :
fold:('t, 'a, 'a option) fold ->
't ->
compare:('a -> 'a -> int) ->
'a optionval max_elt :
fold:('t, 'a, 'a option) fold ->
't ->
compare:('a -> 'a -> int) ->
'a optionval length : fold:('t, _, int) fold -> 't -> intval to_list : fold:('t, 'a, 'a list) fold -> 't -> 'a listval fold_result :
fold:('t, 'a, 'b) fold ->
init:'b ->
f:('b -> 'a -> ('b, 'e) Base.Result.t) ->
't ->
('b, 'e) Base.Result.tval fold_until :
fold:('t, 'a, 'b) fold ->
init:'b ->
f:('b -> 'a -> ('b, 'final) Continue_or_stop.t) ->
finish:('b -> 'final) ->
't ->
'finalval is_empty : iter:('t, 'a) iter -> 't -> boolGeneric definitions of container operations in terms of iter and length.
val exists : iter:('t, 'a) iter -> 't -> f:('a -> bool) -> boolval for_all : iter:('t, 'a) iter -> 't -> f:('a -> bool) -> boolval find : iter:('t, 'a) iter -> 't -> f:('a -> bool) -> 'a optionval find_map : iter:('t, 'a) iter -> 't -> f:('a -> 'b option) -> 'b optionmodule Make = Base.Container.MakeThe idiom for using Container.Make is to bind the resulting module and to explicitly import each of the functions that one wants:
module Make0 = Base.Container.Make0module type S1_permissions = Container_intf.S1_permissions