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 floating-point 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 non-mutable structures, the behavior of (==)
is
implementation-dependent, 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 x-1
.
+
: 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 32-bit platform and
64
on a 64-bit 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 non-zero, 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 0--255.
ignore
: 'p -> unit |
()
.
For instance, ignore(f x)
discards the result of
the side-effecting 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,
end-of-lines 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 8-bit 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,
end-of-lines 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 |