exception Exit
The Exit
exception is not raised by any library function. It is
provided for use in your programs.
val invalid_arg : 'a string -{'a | Invalid_argument: 'a |}-> 'b
Raise exception Invalid_argument
with the given string.
val failwith : 'a string -{'a | Failure: 'a |}-> 'b
Raise exception Failure
with the given string.
val ( = ) : 'a -> 'a -> 'b bool
with content('a) < 'b
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 cyclic data structures may not terminate.
val ( <> ) : 'a -> 'a -> 'b bool
with content('a) < 'b
Negation of Pervasives.=
.
val ( < ) : 'a -> 'a -> 'b bool
with content('a) < 'b
See Pervasives.>=
.
val ( > ) : 'a -> 'a -> 'b bool
with content('a) < 'b
See Pervasives.>=
.
val ( <= ) : 'a -> 'a -> 'b bool
with content('a) < 'b
See Pervasives.>=
.
val ( >= ) : 'a -> 'a -> 'b bool
with content('a) < 'b
Structural ordering functions. These functions coincide with
the usual orderings over integers, characters, strings
and floating-point numbers, and extend them to a
total ordering over all types.
The ordering is compatible with (=)
. As in the case
of (=)
, mutable structures are compared by contents.
Comparison between cyclic structures may not terminate.
val compare : 'a -> 'a -> 'b int
with content('a) < 'b
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.
val min : 'a -> 'a -> 'b
with 'a < 'b
and content('a) < level('b)
Return the smaller of the two arguments.
val max : 'a -> 'a -> 'b
with 'a < 'b
and content('a) < level('b)
Return the greater of the two arguments.
val ( == ) : 'a -> 'a -> 'b bool
with content('a) < 'b
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
.
val ( != ) : 'a -> 'a -> 'b bool
with content('a) < 'b
Negation of Pervasives.==
.
val not : 'a bool -> 'a bool
The boolean negation.
val ( && ) : 'a bool -> 'a bool -> 'a bool
The boolean ``and''. Evaluation is sequential, left-to-right:
in e1 && e2
, e1
is evaluated first, and if it returns false
,
e2
is not evaluated at all.
val ( & ) : 'a bool -> 'a bool -> 'a bool
Deprecated. Pervasives.&&
should be used instead.
val ( || ) : 'a bool -> 'a bool -> 'a bool
See Pervasives.or
.
val ( or ) : 'a bool -> 'a bool -> 'a bool
The boolean ``or''. Evaluation is sequential, left-to-right:
in e1 || e2
, e1
is evaluated first, and if it returns true
,
e2
is not evaluated at all.
val ( ~- ) : 'a int -> 'a int
Unary negation. You can also write -e
instead of ~-e
.
val succ : 'a int -> 'a int
succ x
is x+1
.
val pred : 'a int -> 'a int
pred x
is x-1
.
val ( + ) : 'a int -> 'a int -> 'a int
Integer addition.
val ( - ) : 'a int -> 'a int -> 'a int
Integer subtraction.
val ( * ) : 'a int -> 'a int -> 'a int
Integer multiplication.
val ( / ) : 'a int -> 'b int -{'c | Division_by_zero: 'c |}-> 'a int
with 'b < 'a, 'c
Integer division.
Raise Division_by_zero
if the second argument is 0.
Integer division rounds the real quotient of its arguments towards zero.
More precisely, if x >= 0
and y > 0
, x / y
is the greatest integer
less than or equal to the real quotient of x
by y
. Moreover,
(-x) / y = x / (-y) = -(x / y)
.
val ( mod ) : 'a int -> 'b int -{'c | Division_by_zero: 'c |}-> 'a int
with 'b < 'a, 'c
Integer remainder. If y
is not zero, the result
of x mod y
satisfies the following properties:
x = (x / y) * y + x mod y
and
abs(x mod y) < abs(y)
.
If y = 0
, x mod y
raises Division_by_zero
.
Notice that x mod y
is negative if x < 0
.
val abs : 'a int -> 'a int
Return the absolute value of the argument.
val max_int : 'a int
The greatest representable integer.
val min_int : 'a int
The smallest representable integer.
val ( land ) : 'a int -> 'a int -> 'a int
Bitwise logical and.
val ( lor ) : 'a int -> 'a int -> 'a int
Bitwise logical or.
val ( lxor ) : 'a int -> 'a int -> 'a int
Bitwise logical exclusive or.
val lnot : 'a int -> 'a int
Bitwise logical negation.
val ( lsl ) : 'a int -> 'a int -> 'a 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.
val ( lsr ) : 'a int -> 'a int -> 'a 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
.
val ( asr ) : 'a int -> 'a int -> 'a 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
.
val ( ~-. ) : 'a float -> 'a float
Unary negation. You can also write -.e
instead of ~-.e
.
val ( +. ) : 'a float -> 'a float -> 'a float
Floating-point addition
val ( -. ) : 'a float -> 'a float -> 'a float
Floating-point subtraction
val ( *. ) : 'a float -> 'a float -> 'a float
Floating-point multiplication
val ( /. ) : 'a float -> 'a float -> 'a float
Floating-point division.
val ( ** ) : 'a float -> 'a float -> 'a float
Exponentiation
val sqrt : 'a float -> 'a float
Square root
val exp : 'a float -> 'a float
Exponential.
val log : 'a float -> 'a float
Natural logarithm.
val log10 : 'a float -> 'a float
Base 10 logarithm.
val cos : 'a float -> 'a float
See Pervasives.atan2
.
val sin : 'a float -> 'a float
See Pervasives.atan2
.
val tan : 'a float -> 'a float
See Pervasives.atan2
.
val acos : 'a float -> 'a float
See Pervasives.atan2
.
val asin : 'a float -> 'a float
See Pervasives.atan2
.
val atan : 'a float -> 'a float
See Pervasives.atan2
.
val atan2 : 'a float -> 'a float -> 'a float
The usual trigonometric functions.
val cosh : 'a float -> 'a float
See Pervasives.tanh
.
val sinh : 'a float -> 'a float
See Pervasives.tanh
.
val tanh : 'a float -> 'a float
The usual hyperbolic trigonometric functions.
val ceil : 'a float -> 'a float
See Pervasives.floor
.
val floor : 'a float -> 'a float
Round the given float to an integer value.
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
.
val abs_float : 'a float -> 'a float
Return the absolute value of the argument.
val mod_float : 'a float -> 'a float -> 'a 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.
val frexp : 'a float -> 'a float * 'a 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
.
val ldexp : 'a float -> 'a int -> 'a float
ldexp x n
returns x *. 2 ** n
.
val modf : 'a float -> 'a float * 'a float
modf f
returns the pair of the fractional and integral
part of f
.
val float : 'a int -> 'a float
Same as Pervasives.float_of_int
.
val float_of_int : 'a int -> 'a float
Convert an integer to floating-point.
val truncate : 'a float -> 'a int
Same as Pervasives.int_of_float
.
val int_of_float : 'a float -> 'a int
Truncate the given floating-point number to an integer.
The result is unspecified if it falls outside the
range of representable integers.
val infinity : 'a float
Positive infinity.
val neg_infinity : 'a float
Negative infinity.
val nan : 'a float
A special floating-point value denoting the result of an
undefined operation such as 0.0 /. 0.0
. Stands for
``not a number''.
val max_float : 'a float
The largest positive finite value of type float
.
val min_float : 'a float
The smallest positive, non-zero, non-denormalized value of type float
.
val epsilon_float : 'a float
The smallest positive float x
such that 1.0 +. x <> 1.0
.
type (#'a:level) fpclass =
FP_normal
| FP_subnormal
| FP_zero
| FP_infinite
| FP_nan # 'a
The five classes of floating-point numbers, as determined by
the Pervasives.classify_float
function.
val classify_float : 'a float -> 'a fpclass
Return the class of the given floating-point number:
normal, subnormal, zero, infinite, or not a number.
val ( ^ ) : 'a string -> 'a string -> 'a string
String concatenation.
val ( $$ ) : 'a string -> 'a int -> 'a char
Character access.
val ( ^^ ) : ('a, 'b) charray -> ('a, 'b) charray -> ('a, 'b) charray
Charray concatenation.
val string_of_charray : ('a, 'b) charray -> 'b string
with 'a < 'b
Coerces a mutable string into an immutable one.
val charray_of_string : 'a string -> ('a, 'a) charray
Creates a mutable string from an immutable one.
val int_of_char : 'a char -> 'a int
Return the ASCII code of the argument.
val char_of_int : 'a int -{'b | Invalid_argument: 'b |}-> 'a char
with 'a < 'b
Return the character with the given ASCII code.
Raise Invalid_argument "char_of_int"
if the argument is
outside the range 0--255.
val ignore : 'a -> unit
Discard the value of its argument and return ()
.
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.
val string_of_bool : 'a bool -> 'a string
Return the string representation of a boolean.
val bool_of_string : 'a string -{'b | Invalid_argument: 'b |}-> 'a bool
with 'a < 'b
Convert the given string to a boolean.
Raise Invalid_argument "bool_of_string"
if the string is not
"true"
or "false"
.
val string_of_int : 'a int -> 'a string
Return the string representation of an integer, in decimal.
val int_of_string : 'a string -{'b | Failure: 'b |}-> 'a int
with 'a < 'b
Convert the given string to an integer.
The string is read in decimal (by default) or in hexadecimal,
octal or binary if the string begins with 0x
, 0o
or 0b
respectively.
Raise Failure "int_of_string"
if the given string is not
a valid representation of an integer.
val string_of_float : 'a float -> 'a string
Return the string representation of a floating-point number.
val float_of_string : 'a string -{'b | Failure: 'b |}-> 'a float
with 'a < 'b
Convert the given string to a float. Raise Failure "float_of_string"
if the given string is not a valid representation of a float.
val fst : 'a * 'b -> 'a
Return the first component of a pair.
val snd : 'a * 'b -> 'b
Return the second component of a pair.
val ( @ ) : ('a, 'b) list -> ('a, 'b) list -> ('a, 'b) list
List concatenation.
val print_char : !stdout char -{!stdout ||}-> unit
Print a character on standard output.
val print_string : !stdout string -{!stdout ||}-> unit
Print a string on standard output.
val print_int : !stdout int -{!stdout ||}-> unit
Print an integer, in decimal, on standard output.
val print_float : !stdout float -{!stdout ||}-> unit
Print a floating-point number, in decimal, on standard output.
val print_endline : !stdout string -{!stdout ||}-> unit
Print a string, followed by a newline character, on
standard output.
val print_newline : unit -{!stdout ||}-> unit
Print a newline character on standard output, and flush
standard output. This can be used to simulate line
buffering of standard output.
val prerr_char : !stderr char -{!stderr ||}-> unit
Print a character on standard error.
val prerr_string : !stderr string -{!stderr ||}-> unit
Print a string on standard error.
val prerr_int : !stderr int -{!stderr ||}-> unit
Print an integer, in decimal, on standard error.
val prerr_float : !stderr float -{!stderr ||}-> unit
Print a floating-point number, in decimal, on standard error.
val prerr_endline : !stderr string -{!stderr ||}-> unit
Print a string, followed by a newline character on standard error
and flush standard error.
val prerr_newline : unit -{!stderr ||}-> unit
Print a newline character on standard error, and flush
standard error.
val read_line : unit -{[< !stdout, !stdin] | End_of_file: !stdin |}->
!stdin string
Flush standard output, then read characters from standard input
until a newline character is encountered. Return the string of
all characters read, without the newline character at the end.
val read_int : unit -{[< !stdout,
!stdin] | Failure: !stdin; End_of_file: !stdin |}-> !stdin int
Flush standard output, then read one line from standard input
and convert it to an integer. Raise Failure "int_of_string"
if the line read is not a valid representation of an integer.
val read_float : unit -{[< !stdout, !stdin] | End_of_file: !stdin |}->
!stdin float
Flush standard output, then read one line from standard input
and convert it to a floating-point number.
The result is unspecified if the line read is not a valid
representation of a floating-point number.
type (='a:type, #'b:level) ref = { mutable contents : 'a; } # 'b
The type of references (mutable indirection cells) containing
a value of type 'a
.
val ref : 'a -> ('a, 'b) ref
Return a fresh reference containing the given value.
val ( ! ) : ('a, 'b) ref -> 'c
with 'a < 'c
and 'b < level('c)
!r
returns the current contents of reference r
.
Equivalent to fun r -> r.contents
.
val ( := ) : ('a, 'b) ref -> 'a -{'b ||}-> unit
with 'b < level('a)
r := a
stores the value of a
in reference r
.
Equivalent to fun r v -> r.contents <- v
.
val incr : ('a int, 'a) ref -{'a ||}-> unit
Increment the integer contained in the given reference.
Equivalent to fun r -> r := succ !r
.
val decr : ('a int, 'a) ref -{'a ||}-> unit
Decrement the integer contained in the given reference.
Equivalent to fun r -> r := pred !r
.
val exit : !exit_code int -{'a | exit: 'a |}-> 'b
with 'a < !exit_code
Flush all pending writes on Pervasives.stdout
and
Pervasives.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).
This module provides the built-in types (numbers, booleans, strings, exceptions, references, lists, arrays, input-output channels, ...) and the basic operations over these types.
This module is automatically opened at the beginning of each compilation. All components of this module can therefore be referred by their short name, without prefixing them by
Pervasives
.