module Pervasives = struct ... end
Exceptions  
Exit 
This exception is not raised by any library function. It is
provided for use in your programs. 
Simple values  
max_int 
int 
min_int 
int The greatest and smallest representable integers. 
infinity 
float Positive infinity. 
neg_infinity 
float Negative infinity. 
nan 
float A special floatingpoint value denoting the result of an undefined operation such as 0.0 /. 0.0 . Stands for
``not a number''. 
stdin 
in_channel 
stdout 
out_channel 
stderr 
out_channel The standard input, standard output, and standard error output for the process. 
Functions 
raise
: exn > 'b 
invalid_arg
: string > 'c 
Invalid_argument
with the given string.
failwith
: string > 'd 
Failure
with the given string.
=
: 'e > 'e > bool 
e1 = e2
tests for structural equality of e1
and e2
.
Mutable structures (e.g. references and arrays) are equal
if and only if their current contents are structurally equal,
even if the two mutable objects are not the same physical object.
Equality between functional values raises Invalid_argument
.
Equality between cyclic data structures may not terminate.
<>
: 'f > 'f > bool 
(=)
.
<
: 'g > 'g > bool 
>
: 'h > 'h > bool 
<=
: 'i > 'i > bool 
>=
: 'j > 'j > bool 
(=)
. As in the case
of (=)
, mutable structures are compared by contents.
Comparison between functional values raises Invalid_argument
.
Comparison between cyclic structures may not terminate.
compare
: 'k > 'k > int 
compare x y
returns 0
if x=y
, a negative integer if
x<y
, and a positive integer if x>y
. The same restrictions
as for =
apply. compare
can be used as the comparison function
required by the Set
and Map
modules.
min
: 'l > 'l > 'l 
max
: 'm > 'm > 'm 
==
: 'n > 'n > bool 
e1 == e2
tests for physical equality of e1
and e2
.
On integers and characters, it is the same as structural
equality. On mutable structures, e1 == e2
is true if and only if
physical modification of e1
also affects e2
.
On nonmutable structures, the behavior of (==)
is
implementationdependent, except that e1 == e2
implies
e1 = e2
.
!=
: 'o > 'o > bool 
(==)
.
not
: bool > bool 
&&
: bool > bool > bool 
&
: bool > bool > bool 
e1 && e2
, e1
is evaluated first, and if it returns false
,
e2
is not evaluated at all.

: bool > bool > bool 
or
: bool > bool > bool 
e1  e2
, e1
is evaluated first, and if it returns true
,
e2
is not evaluated at all.
~
: int > int 
e
instead of ~e
.
succ
: int > int 
succ x
is x+1
.
pred
: int > int 
pred x
is x1
.
+
: int > int > int 

: int > int > int 
*
: int > int > int 
/
: int > int > int 
Division_by_zero
if the second argument is 0.
mod
: int > int > int 
x >= 0
and y > 0
, the result
of x mod y
satisfies the following properties:
0 <= x mod y < y
and
x = (x / y) * y + x mod y
.
If y = 0
, x mod y
raises Division_by_zero
.
If x < 0
or y < 0
, the result of x mod y
is
not specified and depends on the platform.
abs
: int > int 
land
: int > int > int 
lor
: int > int > int 
lxor
: int > int > int 
lnot
: int > int 
lsl
: int > int > int 
n lsl m
shifts n
to the left by m
bits.
The result is unspecified if m < 0
or m >= bitsize
,
where bitsize
is 32
on a 32bit platform and
64
on a 64bit platform.
lsr
: int > int > int 
n lsr m
shifts n
to the right by m
bits.
This is a logical shift: zeroes are inserted regardless of
the sign of n
.
The result is unspecified if m < 0
or m >= bitsize
.
asr
: int > int > int 
n asr m
shifts n
to the right by m
bits.
This is an arithmetic shift: the sign bit of n
is replicated.
The result is unspecified if m < 0
or m >= bitsize
.
~
: float > float 
.e
instead of ~.e
.
+
: float > float > float 

: float > float > float 
*
: float > float > float 
/
: float > float > float 
**
: float > float > float 
sqrt
: float > float 
exp
: float > float 
log
: float > float 
log10
: float > float 
cos
: float > float 
sin
: float > float 
tan
: float > float 
acos
: float > float 
asin
: float > float 
atan
: float > float 
atan2
: float > float > float 
cosh
: float > float 
sinh
: float > float 
tanh
: float > float 
ceil
: float > float 
floor
: float > float 
floor f
returns the greatest integer value less than or
equal to f
.
ceil f
returns the least integer value greater than or
equal to f
.
abs_float
: float > float 
mod_float
: float > float > float 
mod_float a b
returns the remainder of a
with respect to
b
. The returned value is a . n *. b
, where n
is the quotient a /. b
rounded towards zero to an integer.
frexp
: float > float * int 
frexp f
returns the pair of the significant
and the exponent of f
. When f
is zero, the
significant x
and the exponent n
of f
are equal to
zero. When f
is nonzero, they are defined by
f = x *. 2 ** n
and 0.5 <= x < 1.0
.
ldexp
: float > int > float 
ldexp x n
returns x *. 2 ** n
.
modf
: float > float * float 
modf f
returns the pair of the fractional and integral
part of f
.
float
: int > float 
float_of_int
: int > float 
truncate
: float > int 
int_of_float
: float > int 
classify_float
: float > fpclass 
^
: string > string > string 
int_of_char
: char > int 
char_of_int
: int > char 
Invalid_argument "char_of_int"
if the argument is
outside the range 0255.
ignore
: 'p > unit 
()
.
For instance, ignore(f x)
discards the result of
the sideeffecting function f
. It is equivalent to
f x; ()
, except that the latter may generate a
compiler warning; writing ignore(f x)
instead
avoids the warning.
string_of_bool
: bool > string 
bool_of_string
: string > bool 
Invalid_argument "bool_of_string"
if the string is not
"true"
or "false"
.
string_of_int
: int > string 
int_of_string
: string > int 
0x
, 0o
or 0b
respectively.
Raise Failure "int_of_string"
if the given string is not
a valid representation of an integer.
string_of_float
: float > string 
float_of_string
: string > float 
fst
: 'q * 'r > 'q 
snd
: 's * 't > 't 
@
: 'u list > 'u list > 'u list 
print_char
: char > unit 
print_string
: string > unit 
print_int
: int > unit 
print_float
: float > unit 
print_endline
: string > unit 
print_newline
: unit > unit 
prerr_char
: char > unit 
prerr_string
: string > unit 
prerr_int
: int > unit 
prerr_float
: float > unit 
prerr_endline
: string > unit 
prerr_newline
: unit > unit 
read_line
: unit > string 
read_int
: unit > int 
Failure "int_of_string"
if the line read is not a valid representation of an integer.
read_float
: unit > float 
open_out
: string > out_channel 
Sys_error
if the file could not be opened.
open_out_bin
: string > out_channel 
open_out
, but the file is opened in binary mode,
so that no translation takes place during writes. On operating
systems that do not distinguish between text mode and binary
mode, this function behaves like open_out
.
open_out_gen
: mode:open_flag list > 
mode
specify the opening mode. The extra argument perm
specifies
the file permissions, in case the file must be created.
open_out
and open_out_bin
are special cases of this function.
flush
: out_channel > unit 
output_char
: out_channel > char > unit 
output_string
: out_channel > string > unit 
output
: out_channel > buf:string > pos:int > len:int > unit 
len
characters from string buf
, starting at offset
pos
, to the given output channel.
Raise Invalid_argument "output"
if pos
and len
do not
designate a valid substring of buf
.
output_byte
: out_channel > int > unit 
output_binary_int
: out_channel > int > unit 
input_binary_int
function. The format is compatible across
all machines for a given version of Objective Caml.
output_value
: out_channel > 'v > unit 
input_value
. See the description of module
Marshal
for more information. output_value
is equivalent
to Marshal.to_channel
with an empty list of flags.
seek_out
: out_channel > int > unit 
seek_out chan pos
sets the current writing position to pos
for channel chan
. This works only for regular files. On
files of other kinds (such as terminals, pipes and sockets),
the behavior is unspecified.
pos_out
: out_channel > int 
out_channel_length
: out_channel > int 
close_out
: out_channel > unit 
Sys_error
exception is raised if any of the functions above
is called on a closed channel.
set_binary_mode_out
: out_channel > bool > unit 
set_binary_mode_out oc true
sets the channel oc
to binary
mode: no translations take place during output.
set_binary_mode_out oc false
sets the channel oc
to text
mode: depending on the operating system, some translations
may take place during output. For instance, under Windows,
endoflines will be translated from \n
to \r\n
.
This function has no effect under operating systems that
do not distinguish between text mode and binary mode.
open_in
: string > in_channel 
Sys_error
if the file could not be opened.
open_in_bin
: string > in_channel 
open_in
, but the file is opened in binary mode,
so that no translation takes place during reads. On operating
systems that do not distinguish between text mode and binary
mode, this function behaves like open_in
.
open_in_gen
: mode:open_flag list > perm:int > string > in_channel 
mode
and perm
specify the opening mode and file permissions.
open_in
and open_in_bin
are special cases of this function.
input_char
: in_channel > char 
End_of_file
if there are no more characters to read.
input_line
: in_channel > string 
End_of_file
if the end of the file is reached
at the beginning of line.
input
: in_channel > buf:string > pos:int > len:int > int 
len
characters from the given channel,
storing them in string buf
, starting at character number pos
.
It returns the actual number of characters read, between 0 and
len
(inclusive).
A return value of 0 means that the end of file was reached.
A return value between 0 and len
exclusive means that
not all requested len
characters were read, either because
no more characters were available at that time, or because
the implementation found it convenient to do a partial read;
input
must be called again to read the remaining characters,
if desired. (See also Pervasives.really_input
for reading
exactly len
characters.)
Exception Invalid_argument "input"
is raised if pos
and len
do not designate a valid substring of buf
.
really_input
: in_channel > buf:string > pos:int > len:int > unit 
len
characters from the given channel, storing them in
string buf
, starting at character number pos
.
Raise End_of_file
if the end of file is reached before len
characters have been read.
Raise Invalid_argument "really_input"
if
pos
and len
do not designate a valid substring of buf
.
input_byte
: in_channel > int 
input_char
, but return the 8bit integer representing
the character.
Raise End_of_file
if an end of file was reached.
input_binary_int
: in_channel > int 
output_binary_int
.
Raise End_of_file
if an end of file was reached while reading the
integer.
input_value
: in_channel > 'w 
output_value
, and return the corresponding value.
This function is identical to Marshal.from_channel
;
see the description of module Marshal
for more information,
in particular concerning the lack of type safety.
seek_in
: in_channel > int > unit 
seek_in chan pos
sets the current reading position to pos
for channel chan
. This works only for regular files. On
files of other kinds, the behavior is unspecified.
pos_in
: in_channel > int 
in_channel_length
: in_channel > int 
close_in
: in_channel > unit 
Sys_error
exception is raised
if any of the functions above is called on a closed channel.
set_binary_mode_in
: in_channel > bool > unit 
set_binary_mode_in ic true
sets the channel ic
to binary
mode: no translations take place during input.
set_binary_mode_out ic false
sets the channel ic
to text
mode: depending on the operating system, some translations
may take place during input. For instance, under Windows,
endoflines will be translated from \r\n
to \n
.
This function has no effect under operating systems that
do not distinguish between text mode and binary mode.
ref
: 'x > 'x ref 
!
: 'y ref > 'y 
!r
returns the current contents of reference r
.
Equivalent to fun r > r.contents
.
:=
: 'z ref > 'z > unit 
r := a
stores the value of a
in reference r
.
Equivalent to fun r v > r.contents < v
.
incr
: int ref > unit 
fun r > r := succ !r
.
decr
: int ref > unit 
fun r > r := pred !r
.
exit
: int > 'a1 
stdout
and stderr
,
and terminate the process, returning the given status code
to the operating system (usually 0 to indicate no errors,
and a small positive integer to indicate failure.)
An implicit exit 0
is performed each time a program
terminates normally (but not if it terminates because of
an uncaught exception).
at_exit
: (unit > unit) > unit 
at_exit
will be called when the program executes exit
.
They will not be called if the program
terminates because of an uncaught exception.
The functions are called in ``last in, first out'' order:
the function most recently added with at_exit
is called first.
unsafe_really_input
: in_channel > string > int > int > unit 
do_at_exit
: unit > unit 