diff options
Diffstat (limited to 'stdlib/pervasives.mli')
-rw-r--r-- | stdlib/pervasives.mli | 198 |
1 files changed, 198 insertions, 0 deletions
diff --git a/stdlib/pervasives.mli b/stdlib/pervasives.mli new file mode 100644 index 0000000000..ff40c49d10 --- /dev/null +++ b/stdlib/pervasives.mli @@ -0,0 +1,198 @@ +(* The initially opened module *) + +(* Predefined in the compiler *) + +(*** +type int +type char +type string +type float +type bool +type unit = () +type exn +type 'a array +type 'a list = [] | :: of 'a * 'a list +type ('a, 'b, 'c) format +exception Out_of_memory +exception Invalid_argument of string +exception Failure of string +exception Not_found +exception Sys_error of string +exception End_of_file +exception Division_by_zero +***) + +(* Exceptions *) + +val raise : exn -> 'a = "%raise" +val failwith: string -> 'a +val invalid_arg: string -> 'a + +exception Exit + +(* Comparisons *) + +val (=) : 'a -> 'a -> bool = "%equal" +val (<>) : 'a -> 'a -> bool = "%notequal" +val (<) : 'a -> 'a -> bool = "%lessthan" +val (>) : 'a -> 'a -> bool = "%greaterthan" +val (<=) : 'a -> 'a -> bool = "%lessequal" +val (>=) : 'a -> 'a -> bool = "%greaterequal" +val compare: 'a -> 'a -> int = "compare" +val min: 'a -> 'a -> 'a +val max: 'a -> 'a -> 'a +val (==) : 'a -> 'a -> bool = "%eq" +val (!=) : 'a -> 'a -> bool = "%noteq" + +(* Boolean operations *) + +val not : bool -> bool = "%boolnot" +val (&) : bool -> bool -> bool = "%sequand" +val (or) : bool -> bool -> bool = "%sequor" + +(* Integer operations *) + +val (~-) : int -> int = "%negint" +val succ : int -> int = "%succint" +val pred : int -> int = "%predint" +val (+) : int -> int -> int = "%addint" +val (-) : int -> int -> int = "%subint" +val ( * ) : int -> int -> int = "%mulint" +val (/) : int -> int -> int = "%divint" +val (mod) : int -> int -> int = "%modint" +val abs : int -> int +val (land) : int -> int -> int = "%andint" +val (lor) : int -> int -> int = "%orint" +val (lxor) : int -> int -> int = "%xorint" +val lnot: int -> int +val (lsl) : int -> int -> int = "%lslint" +val (lsr) : int -> int -> int = "%lsrint" +val (asr) : int -> int -> int = "%asrint" + +(* Floating-point operations *) + +val (~-.) : float -> float = "neg_float" +val (+.) : float -> float -> float = "add_float" +val (-.) : float -> float -> float = "sub_float" +val ( *. ) : float -> float -> float = "mul_float" +val (/.) : float -> float -> float = "div_float" +val ( ** ) : float -> float -> float = "power_float" +val exp : float -> float = "exp_float" +val log : float -> float = "log_float" +val sqrt : float -> float = "sqrt_float" +val sin : float -> float = "sin_float" +val cos : float -> float = "cos_float" +val tan : float -> float = "tan_float" +val asin : float -> float = "asin_float" +val acos : float -> float = "acos_float" +val atan : float -> float = "atan_float" +val atan2 : float -> float -> float = "atan2_float" +val abs_float : float -> float +val float : int -> float = "float_of_int" +val truncate : float -> int = "int_of_float" + +(* String operations -- more in module String *) + +val (^) : string -> string -> string + +(* Pair operations *) + +val fst : 'a * 'b -> 'a = "%field0" +val snd : 'a * 'b -> 'b = "%field1" + +(* String conversion functions *) + +val string_of_bool : bool -> string +val string_of_int : int -> string +val int_of_string : string -> int = "int_of_string" +val string_of_float : float -> string +val float_of_string : string -> float = "float_of_string" + +(* List operations -- more in module List *) + +val (@) : 'a list -> 'a list -> 'a list + +(* I/O operations *) + +type in_channel +type out_channel + +val stdin : in_channel +val stdout : out_channel +val stderr : out_channel + +(* Output functions on standard output *) + +val print_char : char -> unit +val print_string : string -> unit +val print_int : int -> unit +val print_float : float -> unit +val print_endline : string -> unit +val print_newline : unit -> unit + +(* Output functions on standard error *) + +val prerr_char : char -> unit +val prerr_string : string -> unit +val prerr_int : int -> unit +val prerr_float : float -> unit +val prerr_endline : string -> unit +val prerr_newline : unit -> unit + +(* Input functions on standard input *) + +val read_line : unit -> string +val read_int : unit -> int +val read_float : unit -> float + +(* General output functions *) +val open_out : string -> out_channel +val open_out_bin : string -> out_channel +val open_out_gen : Sys.open_flag list -> int -> string -> out_channel +val flush : out_channel -> unit = "flush" +val output_char : out_channel -> char -> unit = "output_char" +val output_string : out_channel -> string -> unit +val output : out_channel -> string -> int -> int -> unit +val output_byte : out_channel -> int -> unit = "output_char" +val output_binary_int : out_channel -> int -> unit = "output_int" +val output_value : out_channel -> 'a -> unit = "output_value" +val output_compact_value : out_channel -> 'a -> unit = "output_value" +val seek_out : out_channel -> int -> unit = "seek_out" +val pos_out : out_channel -> int = "pos_out" +val size_out : out_channel -> int = "channel_size" +val close_out : out_channel -> unit = "close_out" + +(* General input functions *) +val open_in : string -> in_channel +val open_in_bin : string -> in_channel +val open_in_gen : Sys.open_flag list -> int -> string -> in_channel +val input_char : in_channel -> char = "input_char" +val input_line : in_channel -> string +val input : in_channel -> string -> int -> int -> int +val really_input : in_channel -> string -> int -> int -> unit +val input_byte : in_channel -> int = "input_char" +val input_binary_int : in_channel -> int = "input_int" +val input_value : in_channel -> 'a = "input_value" +val seek_in : in_channel -> int -> unit = "seek_in" +val pos_in : in_channel -> int = "pos_in" +val in_channel_length : in_channel -> int = "channel_size" +val close_in : in_channel -> unit = "close_in" + +(* References *) + +type 'a ref = { mutable contents: 'a } +val ref: 'a -> 'a ref = "%makeblock" +val (!): 'a ref -> 'a = "%field0" +val (:=): 'a ref -> 'a -> unit = "%setfield0" +val incr: int ref -> unit = "%incr" +val decr: int ref -> unit = "%decr" + +(* Miscellaneous *) + +val exit : int -> 'a + +type 'a option = None | Some of 'a + +(**** For system use, not for the casual user ****) + +val unsafe_really_input: in_channel -> string -> int -> int -> unit |