This chapter describes the Objective Caml core library, which is
composed of declarations for built-in types and exceptions, plus
the module Pervasives that provides basic operations on these
built-in types. The Pervasives module is special in two
ways:

It is automatically linked with the user's object code files by
the ocamlc command (chapter 8).

It is automatically “opened” when a compilation starts, or
when the toplevel system is launched. Hence, it is possible to use
unqualified identifiers to refer to the functions provided by the
Pervasives module, without adding a open Pervasives directive.

Conventions

The declarations of the built-in types and the components of module
Pervasives are printed one by one in typewriter font, followed by a
short comment. All library modules and the components they provide are
indexed at the end of this report.

The following built-in types and predefined exceptions are always
defined in the
compilation environment, but are not part of any module. As a
consequence, they can only be referred by their short names.

The type of signed, platform-native integers (32 bits on 32-bit
processors, 64 bits on 64-bit processors).
See the Nativeint[Nativeint] module.

type ('a, 'b, 'c, 'd) format4

The type of format strings. 'a is the type of the parameters
of the format, 'd is the result type for the printf-style
function, 'b is the type of the first argument given to
\%a and \%t printing functions (see module Printf[Printf]),
and 'c is the result type of these functions.

type 'a lazy_t

This type is used to implement the Lazy[Lazy] module.
It should not be used directly.

Predefined exceptions

exception Match_failure of (string * int * int)

Exception raised when none of the cases of a pattern-matching
apply. The arguments are the location of the match keyword
in the source code (file name, line number, column number).

exception Assert_failure of (string * int * int)

Exception raised when an assertion fails. The arguments are
the location of the assert keyword in the source code
(file name, line number, column number).

exception Invalid_argument of string

Exception raised by library functions to signal that the given
arguments do not make sense.

exception Failure of string

Exception raised by library functions to signal that they are
undefined on the given arguments.

exception Not_found

Exception raised by search functions when the desired object
could not be found.

exception Out_of_memory

Exception raised by the garbage collector
when there is insufficient memory to complete the computation.

exception Stack_overflow

Exception raised by the bytecode interpreter when the evaluation
stack reaches its maximal size. This often indicates infinite
or excessively deep recursion in the user's program.
(Not fully implemented by the native-code compiler;
see section 11.5.)

exception Sys_error of string

Exception raised by the input/output functions to report
an operating system error.

exception End_of_file

Exception raised by input functions to signal that the
end of file has been reached.

exception Division_by_zero

Exception raised by division and remainder operations
when their second argument is null.
(Not fully implemented by the native-code compiler;
see section 11.5.)

exception Sys_blocked_io

A special case of Sys_error raised when no I/O is possible
on a non-blocking I/O channel.

exception Undefined_recursive_module of (string * int * int)

Exception raised when an ill-founded recursive module definition
is evaluated. (See section 7.8.)
The arguments are the location of the definition in the source code
(file name, line number, column number).