This module is the toplevel of the Base library, it is what you get when you do open
Base.
The recommended way to use Base is to build with -open Base. Files compiled this
way will have the environment described in this file as initial environment.
module Applicative : sig ... endmodule Applicative_intf : sig ... endApplicatives model computations in which values computed by subcomputations cannot affect what subsequent computations will take place. Relative to monads, this restriction takes power away from the user of the interface and gives it to the implementation. In particular, because the structure of the entire computation is known, one can augment its definition with some description of that structure.
module Array : sig ... endmodule Binary_search : sig ... endGeneral functions for performing binary searches over ordered sequences given
length and get functions. These functions can be specialized and added to
a data structure using the functors supplied in Binary_searchable and described
in Binary_searchable_intf.
module Binary_searchable_intf : sig ... endModule types for a binary_search function for a sequence, and functors for building
binary_search functions.
module Blit_intf : sig ... endStandard type for blit functions, and reusable code for validating blit
arguments.
module Bool : sig ... endmodule Buffer : sig ... endmodule Bytes : sig ... endOCaml's byte sequence type, semantically similar to a char array, but
taking less space in memory.
module Commutative_group : sig ... endA signature for a commutative group (in the group-theory sense).
module Comparable : sig ... endmodule Comparable_intf : sig ... endmodule Comparator : sig ... endA type-indexed value that allows one to compare (and for generating error messages, serialize) values of the type in question.
module Container : sig ... endmodule Container_intf : sig ... endThis file has generic signatures for container data structures, with standard
functions (iter, fold, exists, for_all, ...) that one would expect to find in
any container. The idea is to include Container.S0 or Container.S1 in the
signature for every container-like data structure (Array, List, String, ...) to
ensure a consistent interface.
module Either : sig ... endmodule Either_intf : sig ... endMany functions in Either focus on just one constructor. The Focused signature
abstracts over which constructor is the focus. To use these functions, use the
First or Second modules in S.
module Equal : sig ... endThis module defines signatures that are to be included in other signatures to ensure a
consistent interface to equal functions. There is a signature (S, S1, S2,
S3) for each arity of type. Usage looks like:
module Error : sig ... endA lazy string, implemented with Info, but intended specifically for error
messages.
module Exn : sig ... endsexp_of_t uses a global table of sexp converters. To register a converter for a new
exception, add [@@deriving_inline sexp][@@@end] to its definition. If no suitable converter is
found, the standard converter in Printexc will be used to generate an atomic
S-expression.
module Floatable : sig ... endmodule Hash : sig ... endmodule Hash_set : sig ... endmodule Hash_set_intf : sig ... endmodule Hasher : sig ... endSignatures required of types which can be used in [@@deriving_inline hash][@@@end].
module Hashtbl : sig ... endmodule Hashtbl_intf : sig ... endmodule Heap_block : sig ... endA heap block is a value that is guaranteed to live on the OCaml heap, and is hence guaranteed to be usable with finalization or in a weak pointer. It is an abstract type so we can use the type system to guarantee that the values we put in weak pointers and use with finalizers are heap blocks.
module Identifiable : sig ... endA signature combining functionality that is commonly used for types that are intended to act as names or identifiers.
module Indexed_container : sig ... endmodule Info : sig ... endmodule Info_intf : sig ... endInfo is a library for lazily constructing human-readable information as a string or
sexp, with a primary use being error messages. Using Info is often preferable to
sprintf or manually constructing strings because you don't have to eagerly construct
the string --- you only need to pay when you actually want to display the info. which
for many applications is rare. Using Info is also better than creating custom
exceptions because you have more control over the format.
module Int64 : sig ... endmodule Int_intf : sig ... endmodule Intable : sig ... endmodule Invariant : sig ... endmodule Map : sig ... endmodule Maybe_bound : sig ... endmodule Monad : sig ... endmodule Nativeint : sig ... endmodule Option : sig ... endmodule Or_error : sig ... endType for tracking errors in an Error.t. This is a specialization of the Result type, where the Error constructor carries an Error.t.
module Ordered_collection_common : sig ... endmodule Ordering : sig ... endOrdering is intended to make code that matches on the result of a comparison
more concise and easier to read. For example, instead of writing:
module Poly : sig ... endmodule Polymorphic_compare : sig ... endmodule Popcount : sig ... endThis module exposes popcount functions for the various integer types. Functions are exposed in their respective modules.
module Pretty_printer : sig ... endA list of pretty printers for various types, for use in toplevels.
module Printf : sig ... endmodule Linked_queue : sig ... endThis module is a wrapper around OCaml's standard Queue module that follows Base
idioms and adds some functions. See Queue_intf for documentation of standard queue
functions.
module Queue_intf : sig ... endAn interface for queues that follows Base's conventions, as opposed to OCaml's
standard Queue module.
module Sequence : sig ... endA sequence of elements that can be produced one at a time, on demand, normally with no sharing.
module Set : sig ... endmodule Sexpable : sig ... endNew code should use the @@deriving_inline sexp@@@end syntax directly. These module types
(S, S1, S2, and S3) are exported for backwards compatibility only. *
module Source_code_position : sig ... endOne typically obtains a Source_code_position.t using a [%here] expression, which
is implemented by the ppx_here preprocessor.
module Staged : sig ... endA type for making staging explicit in the type of a function. For example, you might want to have a function that creates a function for allocating unique identifiers. Rather than using the type:
module String : sig ... endAn extension of the standard StringLabels. If you open Base, you'll get these in
the String module.
module Stringable : sig ... endmodule String_dict : sig ... endEfficient static string dictionaries. By static, we mean that new key-value pairs cannot be added after the dictionary is created.
module T : sig ... endmodule Type_equal : sig ... endFor representing type equalities otherwise not known by the type-checker.
module Validate : sig ... endA module for organizing validations of data structures. Allows standardized ways of checking for conditions, and keeps track of the location of errors by keeping a path to each error found. Thus, if you were validating the following datastructure:
module With_return : sig ... endwith_return f allows for something like the return statement in C within f. There
are three ways f can terminate:
module type T : sig ... endmodule type T1 : sig ... endmodule type T2 : sig ... endmodule type T3 : sig ... endmodule Sexp : sig ... endmodule Export : sig ... endinclude Exportval hash_fold_bool : Hash.state ‑> bool ‑> Hash.stateval hash_bool : bool ‑> Hash.hash_valueval hash_fold_char : Hash.state ‑> char ‑> Hash.stateval hash_char : char ‑> Hash.hash_valueval hash_fold_float : Hash.state ‑> float ‑> Hash.stateval hash_float : float ‑> Hash.hash_valueval hash_fold_int : Hash.state ‑> int ‑> Hash.stateval hash_int : int ‑> Hash.hash_valueval hash_fold_int32 : Hash.state ‑> int32 ‑> Hash.stateval hash_int32 : int32 ‑> Hash.hash_valueval hash_fold_int64 : Hash.state ‑> int64 ‑> Hash.stateval hash_int64 : int64 ‑> Hash.hash_valueval hash_fold_list : a. (Hash.state ‑> 'a ‑> Hash.state) ‑> Hash.state ‑> 'a list ‑> Hash.stateval hash_fold_nativeint : Hash.state ‑> nativeint ‑> Hash.stateval hash_nativeint : nativeint ‑> Hash.hash_valueval hash_fold_option : a. (Hash.state ‑> 'a ‑> Hash.state) ‑> Hash.state ‑> 'a option ‑> Hash.stateval hash_fold_string : Hash.state ‑> string ‑> Hash.stateval hash_string : string ‑> Hash.hash_valueval hash_fold_unit : Hash.state ‑> unit ‑> Hash.stateval hash_unit : unit ‑> Hash.hash_valueExporting the ad-hoc types that are recognized by ppx_sexp_* converters.
sexp_array, sexp_list, and sexp_option allow a record field to be absent when
converting from a sexp, and if absent, the field will take a default value of the
appropriate type:
sexp_array [||]
sexp_bool false
sexp_list []
sexp_option Nonesexp_opaque causes the conversion to sexp to produce the atom <opaque>.
For more documentation, see sexplib/README.md.
List operators
include List.Infixval (@) : 'a Base__List.t ‑> 'a Base__List.t ‑> 'a Base__List.tInt operators and comparisons
include Int.OA sub-module designed to be opened to make working with ints more convenient.
Float operators
include Float.O_dotSimilar to O, except that operators are suffixed with a dot, allowing one to have
both int and float operators in scope simultaneously.
Similar to O, except that operators are suffixed with a dot, allowing one to have
both int and float operators in scope simultaneously.
external (|>) : 'a ‑> ('a ‑> 'b) ‑> 'b = "%revapply" Reverse application operator. x |> g |> f is equivalent to f (g (x)).
external (@@) : ('a ‑> 'b) ‑> 'a ‑> 'b = "%apply" Application operator. g @@ f @@ x is equivalent to g (f (x)).
external ignore : _ ‑> unit = "%ignore" external ref : 'a ‑> 'a ref = "%makemutable" val raise_s : Sexp.t ‑> 'aexternal force : 'a Lazy.t ‑> 'a = "%lazy_force" module Continue_or_stop = Container_intf.Export.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 Finished_or_stopped_early = Container_intf.Export.Finished_or_stopped_earlyFinished_or_stopped_early.t is returned by fold_until to indicate whether
f requested the fold stop, or if the fold completed.
module Not_exposed_properly : sig ... end