Module Pervasives


module Pervasives: sig .. end
初期状態で open されているモジュール

このモジュールは(数値、真偽値、文字列、例外、リファレンス、リスト、配列、入出力チャネルといった)組み込みの型に対する基本的な演算を提供しています。

このモジュールはコンパイルを始めるときに毎回自動的に open されます。 したがって、このモジュールの構成要素はすべて、 Pervasives をつけずに参照することができます。



例外


val raise : exn -> 'a
与えられた例外値を送出します。
val invalid_arg : string -> 'a
与えられた文字列で Invalid_argument 例外を送出します。
val failwith : string -> 'a
与えられた文字列で Failure 例外を送出します。
exception Exit
Exit 例外を発生させるライブラリ関数はありません。 ユーザープログラムで使うために提供されている例外です。

比較関数


val (=) : 'a -> 'a -> bool
e1 = e2e1e2 の構造的等価性を検査します。 (リファレンスや配列といった)変更可能な構造は、 ふたつのオブジェクトが物理的に同一のオブジェクトでなくても、 それぞれの現在の内容が構造的に等価であるとき、かつそのときに限り、等価と見做されます。 関数値同士を比較すると Invalid_argument 例外が発生します。 循環構造を持つデータ構造同士の比較は停止しないかもしれません。
val (<>) : 'a -> 'a -> bool
(=) の否定です
val (<) : 'a -> 'a -> bool
(>=) を参照
val (>) : 'a -> 'a -> bool
(>=) を参照
val (<=) : 'a -> 'a -> bool
(>=) を参照
val (>=) : 'a -> 'a -> bool
構造的順序付け関数です。 整数、文字、文字列、浮動小数点数については通常の順序を返し、それらを拡張してその他の型に対しても全順序関係を定義しています。 この順序は ( = ) と互換性があります。 ( = ) の場合と同じく、変更可能な構造は、その要素により比較されます。 関数値同士の比較をすると Invalid_argument 例外が発生します。 循環構造の比較をすると停止しないかもしれません。
val compare : 'a -> 'a -> int
xy が等しい場合 compare x y0 を返し、 xy より小さいときには負の整数、より大きいときには正の整数を返します。 compare による順序は、上で定義した比較述語 =<> と互換性がありますが、ただひとつ、浮動小数点値 nan の扱いだけが異なります。 比較述語では、 nan をそれ自身を含むすべての浮動小数点値を異なるものとして扱いますが、それに対して compare では nan は自身と等しいものとし、他の如何なる浮動小数点値よりも小さいものとして扱います。 nan をこのように扱うことで compare 関数が全順序を定義することを保証しています。

compare を関数値に適用すると Invalid_argument 例外が発生します。 循環構造に適用すると停止しないかもしれません。

compare 関数は Set.MakeMap.Make ファンクタ、 List.sort 関数や Array.sort 関数で要求される比較関数として使うことができます。

val min : 'a -> 'a -> 'a
ふたつの引数のうち、より小さいものを返します。 引数のいずれかが、浮動小数点値 nan であった場合の結果は規定されていません。
val max : 'a -> 'a -> 'a
ふたつの引数のうち、より大きいものを返します。 引数のいずれかが、浮動小数点値 nan であった場合の結果は規定されていません。
val (==) : 'a -> 'a -> bool
e1 == e2e1e2 の物理的等価性を検査します。 リファレンスや配列、文字列、変更可能なフィールドのあるレコードや変更可能なインスタンス変数のあるオブジェクトといった変更可能な型については、 e1 に対する物理的変更が e2 にも影響を与える場合、かつその場合にかぎり e1 == e2 は真になります。 変更不能な型については ( == ) の結果は処理系依存になります。ただし、 e1 == e2 であれば compare e1 e2 = 0 となることは保証されます。
val (!=) : 'a -> 'a -> bool
of (==) の否定。

真偽値の操作


val not : bool -> bool
論理否定です。
val (&&) : bool -> bool -> bool
論理積です。評価は左から右へ順に行なわれ、 e1 && e2 は、まず e1 を評価し、それが false を返した場合には e2 はまったく評価されません。
val (&) : bool -> bool -> bool
Deprecated.(&&) を代わりに使ってください。
val (||) : bool -> bool -> bool
論理和です。評価は左から右へ順に行なわれ、 e1 || e2 は、まず e1 を評価し、それが true を返した場合には e2 はまったく評価されません。
val (or) : bool -> bool -> bool
Deprecated.(||) を代わりに使ってください。

整数演算



整数は 31 ビット幅です(64 ビットプロセッサでは 63 ビット幅なります) すべての演算は 231 (または 263)を法とした剰余を取ります。 オーバーフローが起こっても失敗しません。
val (~-) : int -> int
単項の符号反転。 ~-e の代わりに - e と書くこともできます。
val (~+) : int -> int
単項の和。 ~+e の代わりに + e と書くこともできます。
Since 3.12.0
val succ : int -> int
succ xx + 1 になります。
val pred : int -> int
pred xx - 1 になります。
val (+) : int -> int -> int
整数の和。
val (-) : int -> int -> int
整数の差。
val ( * ) : int -> int -> int
整数の積。
val (/) : int -> int -> int
整数の除算。第二引数が 0 のときには Division_by_zero 例外が発生します。 整数の除算では、実際の商を零方向に丸めます。 より精確に言うと、 x >= 0 かつ y > 0 のとき、 x / yxy の実際の商以下の最大の整数になります。 さらに、 (- x) / y = x / (- y) = - (x / y) になります。
val (mod) : int -> int -> int
整数の剰余。 y が 0 でないとき、 x mod y の結果は x = (x / y) * y + x mod y かつ abs(x mod y) <= abs(y) - 1 という性質を満たします。 y = 0 のときは Division_by_zero 例外が発生します。 x mod yx < 0 のときだけ負になることに注意してください。
val abs : int -> int
引数の絶対値を返します。引数が min_int のとき負の数が返ることがあることに注意してください。
val max_int : int
表現可能な最大の整数。
val min_int : int
表現可能な最小の整数。

ビット演算

val (land) : int -> int -> int
ビットごとの論理積。
val (lor) : int -> int -> int
ビットごとの論理和。
val (lxor) : int -> int -> int
ビットごとの排他的論理和。
val lnot : int -> int
ビットごとの論理否定。
val (lsl) : int -> int -> int
n lsl mn を左に m ビットシフトします。 m < 0 ないしは m >= bitsize のときの結果は規定されていません。 ここで、 bitsize は 32 ビット環境では 32、 64 ビット環境では 64 になります。
val (lsr) : int -> int -> int
n lsr mn を右に m ビットシフトします。 これは論理シフトで、 n の符号によらず 0 が挿入されます。 m < 0 ないしは m >= bitsize のときの結果は規定されていません。
val (asr) : int -> int -> int
n asr mn を右に m ビットシフトします。 これは算術シフトで、 n の符号ビットが複製されます。 m < 0 ないしは m >= bitsize のときの結果は規定されていません。

浮動小数点演算

Caml の浮動小数点数は IEEE 754 標準の(64 ビット)倍精度数です。 浮動小数点演算はオーバーフローやアンダーフロー、零除算時に例外を発生させません。 代わりに、 1.0 /. 0.0 には infinitiy-1.0 /. 0.0 には neg_infinity0.0 /. 0.0 には nan (非数 -- ``not a number'')といった、特別な IEEE 数値を返します。これらの数値は、浮動小数点演算により、およそ想像通りに波及していきます。 例えば 1.0 /. infinity0.0 になり、 nan を引数とした任意算術演算は結果として nan を返します。

val (~-.) : float -> float
単項の符号反転。 ~-. e の代わりに -. e と書くこともできます。
val (~+.) : float -> float
単項の和。 ~+. e の代わりに +. e と書くこともできます。
Since 3.12.0
val (+.) : float -> float -> float
浮動小数点数の加算。
val (-.) : float -> float -> float
浮動小数点数の減算。
val ( *. ) : float -> float -> float
浮動小数点数の乗算。
val (/.) : float -> float -> float
浮動小数点数の除算。
val ( ** ) : float -> float -> float
冪乗。
val sqrt : float -> float
平方根。
val exp : float -> float
指数関数。
val log : float -> float
自然対数。
val log10 : float -> float
底 10 の対数。
val expm1 : float -> float
expm1 xexp x -. 10 を計算します。 x が 0.0 に近いときでも精確な結果を返します。
Since 3.12.0
val log1p : float -> float
log1p xlog(1.0 +. x) (自然対数)を返します。 x が 0.0 に近いときでも精確な結果を返します。
Since 3.12.0
val cos : float -> float
余弦。引数はラジアン角です。
val sin : float -> float
正弦。引数はラジアン角です。
val tan : float -> float
正接。引数はラジアン角です。
val acos : float -> float
逆余弦。引数は区間 [-1.0, 1.0] になければなりません。 結果は 0.0 から pi までのラジアン角になります。
val asin : float -> float
逆正弦。引数は区間 [-1.0, 1.0] になければなりません。 結果は 0.0 から pi までのラジアン角になります。
val atan : float -> float
逆正接。 結果は -pi/2 から pi/2 までのラジアン角になります。
val atan2 : float -> float -> float
atan y xy /. x の逆正接を返します。 xy の符号が結果の象限を決めるのに使われます。 結果は -pi から pi までのラジアン角になります。
val cosh : float -> float
双曲線余弦関数。引数はラジアン角です。
val sinh : float -> float
双曲線正弦関数。引数はラジアン角です。
val tanh : float -> float
双曲線正接関数。引数はラジアン角です。
val ceil : float -> float
引数を整数に切り上げます。 ceil ff 以上の最小の整数を返します。結果は浮動小数点数として返ります。
val floor : float -> float
引数を整数に切り下げます。 floor ff 以下の最大の整数を返します。結果は浮動小数点数として返ります。
val abs_float : float -> float
abs_float ff の絶対値を返します。
val mod_float : float -> float -> float
mod_float a bab で割った余りを返します。 n を商 a /. b を零方向に丸めた整数とすると、戻り値は a -. n *. b になります。
val frexp : float -> float * int
frexp ff の仮数部と指数部のペアを返します。 f が 0 のとき、 f の仮数部 x と指数部 n は 0 になります。 f が 0 でないときは、 f = x *. 2 ** n0.5 <= x < 1.0 により定義されます。
val ldexp : float -> int -> float
ldexp x nx *. 2 ** n を返します。
val modf : float -> float * float
modff の小数部と整数部のペアを返します。
val float : int -> float
float_of_int と同じです。
val float_of_int : int -> float
整数を浮動小数点数に変換します。
val truncate : float -> int
int_of_float と同じです。
val int_of_float : float -> int
与えられた浮動小数点数値を整数に切り詰めます。 引数が nan である場合や、表現可能な整数の範囲を越えた場合の結果は規定されていません。
val infinity : float
正の無限大
val neg_infinity : float
負の無限大
val nan : float
0.0 /. 0.0 のような未定義の演算の結果を表す浮動小数点値です。 非数(``not a number'')を意味します。 nan に対する浮動小数点演算はすべて nan を返します。 比較に関しては、引数の一方ないしは両方が nan のとき、 =<<=>>=false を返し、 <>true を返します。
val max_float : float
float 型で最大の有限の値。
val min_float : float
float 型で、零でない正の非正規化された最小の値。
val epsilon_float : float
1.0 より大きくかつ浮動小数点数として精確に表せる最小の値と 1.0 との差。

type fpclass =
| FP_normal (*下記以外の通常の数である*)
| FP_subnormal (*数値が 0.0 に非常に近く、精度が低くなっている*)
| FP_zero (*数が 0.0 ないしは -0.0 である*)
| FP_infinite (*数が正/負の無限大である*)
| FP_nan (*数ではない(Not a Number -- nan である)。未定義の演算の結果である*)
classify_float 関数により特定された浮動小数点数の種別。
val classify_float : float -> fpclass
与えられた浮動小数点数の種別(通常の数、非正規数、零、無限大、 NaN)を返します。

文字列の演算

String モジュールでより多くの文字列演算が提供されています。

val (^) : string -> string -> string
文字列の連結。

文字の演算

Char モジュールでより多くの文字演算が提供されています。

val int_of_char : char -> int
引数文字の ASCII コードを返します。
val char_of_int : int -> char
与えられた ASCII コードに対応する文字を返します。 非数が 0--255 の範囲外であった場合には Invalid_argument "char_of_int" が発生します。

ユニットの演算


val ignore : 'a -> unit
引数の値を捨てて () を返します。 例えば ignore(f x) は副作用のある関数 f の結果を捨てます。 これは f x; () と等価ですが、こちらはコンパイラが警告を表示するかもしれません。 代わりに ignore(f x) と書くと警告を避けることができます。

文字列変換関数


val string_of_bool : bool -> string
真偽値の文字列表現を返します。
val bool_of_string : string -> bool
与えられた文字列を真偽値に変換します。 引数が "true""false" でない場合には Invalid_argument "bool_of_string" 例外が発生します。
val string_of_int : int -> string
整数の十進文字列表現を返します。
val int_of_string : string -> int
与えられた文字列を整数に変換します。 文字列は十進(デフォルト)または十六進(0x ないしは 0X で始まっていた場合)または八進(0o ないしは 0O で始まっていた場合)または二進(0b ないしは 0B で始まっていた場合)で読み込まれます。 引数が整数の文字列表現として妥当なものでなかった場合や、引数の表す整数が int 型で表現可能な範囲を越えていた場合には Failure "int_of_string" 例外が発生します。
val string_of_float : float -> string
浮動小数点数の文字列表現を返します。
val float_of_string : string -> float
与えられた文字列を浮動小数点数に変換します。 引数が浮動小数点数の文字列表現として妥当なものでなかった場合には Failure "float_of_string" 例外が発生します。

ペアの演算


val fst : 'a * 'b -> 'a
ペアの最初の要素を返します。
val snd : 'a * 'b -> 'b
ペアの二番目の要素を返します。

リストの演算

List モジュールでより多くのリスト演算が提供されています。

val (@) : 'a list -> 'a list -> 'a list
リストの連結

入出力


type in_channel 
入力チャネルの型。
type out_channel 
出力チャネルの型。
val stdin : in_channel
プロセスの標準入力
val stdout : out_channel
プロセスの標準出力
val stderr : out_channel
プロセスの標準エラー出力

標準出力への出力関数


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
標準出力に改行文字を出力し、標準出力をフラッシュします。 この関数を使うと標準出力の行バッファリングを模倣することができます。

標準エラー出力への出力関数


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
標準エラー出力へ改行文字を出力し標準エラー出力をフラッシュします。

標準入力からの入力関数


val read_line : unit -> string
標準出力をフラッシュしてから標準入力から改行文字が現れるまで文字を読み込みます。 読み込んだ文字列から終端の改行文字を除いたものを返します。
val read_int : unit -> int
標準出力をフラッシュしてから標準入力から一行読み込み、それを整数に変換して返します。 読み込んだ行が整数の文字列表現として妥当なものでない場合は Failure "int_of_string" 例外が発生します。
val read_float : unit -> float
標準出力をフラッシュしてから標準入力から一行読み込み、それを浮動小数点数に変換して返します。 読み込んだ行が浮動小数点数の文字列表現として妥当なものでない場合の結果は規定されていません。

汎用出力関数



type open_flag =
| Open_rdonly (*読み込み用に開く*)
| Open_wronly (*書き込み用に開く*)
| Open_append (*追記用に開く(常にファイル終端に書き込む)*)
| Open_creat (*ファイルが存在しない場合は作成する*)
| Open_trunc (*ファイルが存在した場合には空にする*)
| Open_excl (*Open_creat が指定されていてファイルがすでに存在した場合には失敗する*)
| Open_binary (*バイナリモードで開く(変換を行なわない)*)
| Open_text (*テキストモードで開く(変換を行なう可能性がある)*)
| Open_nonblock (*ノンブロッキングモードで開く*)
open_out_genopen_in_gen に指定するモードです。
val open_out : string -> out_channel
名前のついたファイルを書き込み用に開き、そのファイルに対する出力チャネルの、出力位置をファイルの先頭に設定したものを返します。 ファイルが既に存在した場合、長さは 0 に切り詰められます。 存在しなかった場合には新たに作成されます。 ファイルが開けなかった場合には Sys_error 例外が発生します。
val open_out_bin : string -> out_channel
open_out と同じですが、ファイルをバイナリモードで開きます。 書き込み時に変換は行なわれません。 テキストモードとバイナリモードを区別しない OS では、この関数は open_out と同じように振る舞います。
val open_out_gen : open_flag list -> int -> string -> out_channel
open_out_gen mode perm filename は名前のついたファイルを書き込み用に開きます。 mode にはモードを指定します。 perm にはファイルが作成されるときのパーミッションを指定します。 open_outopen_out_bin はこの関数を特殊化したものです。
val flush : out_channel -> unit
与えられた出力チャネルのバッファをフラッシュし、出力待ちになっていた書き込みを実行します。 対話的なプログラムは標準出力と標準エラー出力が適切なタイミングでフラッシュされるよう注意しなければなりません。
val flush_all : unit -> unit
すべての出力チャネルをフラッシュします。エラーは無視します。
val output_char : out_channel -> char -> unit
与えられた出力チャネルに文字を出力します。
val output_string : out_channel -> string -> unit
与えられた出力チャネルに文字列を出力します。
val output : out_channel -> string -> int -> int -> unit
output oc buf pos len は文字列 bufpos 番目から len 文字を与えられた出力ポート oc に書き込みます。 poslenbuf の妥当な部分文字列を表さない場合には Invalid_argument "output" 例外が発生します。
val output_byte : out_channel -> int -> unit
8 ビット整数値を(そのコードに対応する文字として)与えられた出力チャネルに書き込みます。 与えられた整数は 256 を法とした剰余を取ってから出力します。
val output_binary_int : out_channel -> int -> unit
与えられた入力チャネルに整数をバイナリ形式(4 バイト、ビッグエンディアン)で書き込みます。 整数は 232 を法とした剰余を取ってから出力します。 書き込んだものを確実に読み戻す方法は input_binary_int 関数だけです。 出力形式は同一のバージョンの Objective Caml であればすべての計算機で互換性があります。
val output_value : out_channel -> 'a -> unit
任意の型の構造化された値の外部表現をチャネルに書き出します。 構造の循環と共有関係は保存されます。出力したオブジェクトは input_value 関数で読み戻すことができます。 より詳しくは Marshal モジュールの説明を読んでください。 output_valueMarshal.to_channel に空のフラグリストを与えたものと等価です。
val seek_out : out_channel -> int -> unit
seek_out chan pos はチャネル chan の書き込み位置を pos に設定します。 これは通常のファイルに対してだけ働きます。 他の種類のファイル(例えば、端末やパイプ、ソケット)に対する振る舞いは規定されていません。
val pos_out : out_channel -> int
与えられたチャネルの現在の書き込み位置を返します。 Open_append フラグを指定して開いたチャネルに対しては動作しません(結果は規定されていません)。
val out_channel_length : out_channel -> int
与えられたチャネルが開いている、通常のファイルのサイズ(文字数)を返します。 チャネルの開いているファイルが通常のファイルでない場合は意味のない値が返ります。
val close_out : out_channel -> unit
与えられたチャネルを、バッファをフラッシュして閉じます。 閉じた出力チャネルに close_outflush 以外の出力関数を適用すると Sys_error 例外が発生します。この二関数は閉じたチャネルに適用しても何もしません。 バッファをフラッシュするときやファイルを閉じるときに OS エラーが通知した場合、この関数は Sys_error 例外を発生させる可能性があります。
val close_out_noerr : out_channel -> unit
close_out と同じですが、エラーをすべて無視します。
val set_binary_mode_out : out_channel -> bool -> unit
set_binary_mode_out oc true はチャネル oc をバイナリモードに設定します。 これにより書き込み時の変換が行なわれなくなります。 set_binary_mode_out oc false とすると、チャネル oc をテキストモードに設定します。 これにより OS 依存で出力中に変換が行なわれるようになります。 例えば Windows 上では行末が \n から \r\n に変換されます。 この関数はテキストモードとバイナリモードを区別しない OS では何の効果もありません。

汎用入力関数

val open_in : string -> in_channel
名前のついたファイルを読み込み用に開き、そのファイルに対する入力チャネルの、読み込み位置をファイルの先頭に設定したものを返します。 ファイルが開けなかった場合には Sys_error 例外が発生します。
val open_in_bin : string -> in_channel
open_in と同じですが、ファイルはバイナリモードで開かれます。 読み込み時に変換は行なわれません。 テキストモードとバイナリモードを区別しない OS では、この関数は open_in と同じように振る舞います。
val open_in_gen : open_flag list -> int -> string -> in_channel
open_in_gen mode perm filename は名前のついたファイルを開きます。 modeperm にはファイルのモードとパーミッションを指定します。 open_inopen_in_bin はこの関数を特殊化したものです。
val input_char : in_channel -> char
与えられた入力チャネルから文字をひとつ読み込みます。 読み込める文字がなかった場合には End_of_file 例外が発生します。
val input_line : in_channel -> string
与えられた入力チャネルから改行文字が現れるまで文字を読み込み、そこから末尾の改行文字を除いた文字列を返します。 行の先頭でファイル終端に達した場合には End_of_file 例外が発生します。
val input : in_channel -> string -> int -> int -> int
input ic buf pos len は与えられたチャネル ic から len 文字読み込み、文字列 bufpos 文字目以降に格納します。 実際に読み込んだ文字数(0 以上 len 以下)を返します。 戻り値が 0 以上 len 未満のときは、充分な文字がなかったか、分割して読み込んだ方がよいと処理系が判斷したかで、要求された len 文字がすべては読まれなかったということです。 必要であれば、残りの文字を読み込むために input を再度呼び出さなければなりません (ちょうど len 文字読み込む方法については really_input も参照してください)。 poslenbuf の有効な部分文字列を表さない場合には Invalid_argument "input" 例外が発生します。
val really_input : in_channel -> string -> int -> int -> unit
input ic buf pos len は与えられたチャネル ic から len 文字読み込み、文字列 bufpos 文字目以降に格納します。 len 文字読み込む前にファイル終端に達した場合には End_of_file 例外が発生します。 poslenbuf の有効な部分文字列を表さない場合には Invalid_argument "really_input" 例外が発生します。
val input_byte : in_channel -> int
input_char と同じですが、文字を表わす 8 ビット整数を返します。 ファイル終端に達した場合には End_of_file 例外が発生します。
val input_binary_int : in_channel -> int
与えられた入力チャネルからバイナリ形式(4 バイト、ビッグエンディアン)でエンコードされた整数を読み込みます。 output_binary_int を参照してください。 整数の読み込み中にファイル終端に達した場合には End_of_file 例外が発生します。
val input_value : in_channel -> 'a
output_value の生成したオブジェクトの外部表現を読み込み、それに対応する値を返します。 この関数は Marshal.from_channel と同じです。 特に型安全性の欠如などについて、より詳しくは Marshal モジュールの説明を参照してください。
val seek_in : in_channel -> int -> unit
seek_in chan pos はチャネル chan の読み込み位置を pos に設定します。 この関数は通常のファイルに対してのみ動作します。 他の種類のファイルに適用した場合の振る舞いは規定されていません。
val pos_in : in_channel -> int
与えられたチャネルの現在の読み込み位置を返します。
val in_channel_length : in_channel -> int
与えられたチャネルが開いている通常のファイルのサイズ(文字数)を返します。 通常のファイル以外を開いているチャネルの場合、戻り値に意味はありません。 結果として返っていくサイズは、テキストモードで開いているチャネルで行なわれる行末の変換を考慮していません。
val close_in : in_channel -> unit
与えられたチャネルを閉じます。 既に閉じたチャネルに close_in 以外の関数を適用すると Sys_error 例外が発生します。 既に閉じたチャネルに close_in を適用しても何も起こりません。 OS がエラーを通知してきた場合には close_inSys_error 例外を発生させる可能性があることに注意してください。
val close_in_noerr : in_channel -> unit
close_in と同じですがエラーをすべて無視します。
val set_binary_mode_in : in_channel -> bool -> unit
set_binary_mode_out oc true とするとチャネル oc をバイナリモードに設定します。 これにより読み込み時の変換が行なわれなくなります。 set_binary_mode_out oc false とすると、チャネル oc をテキストモードに設定します。 これにより OS 依存で読み込み中に変換が行なわれるようになります。 例えば Windows 上では行末が \r\n から \n に変換されます。 この関数はテキストモードとバイナリモードを区別しない OS では何の効果もありません。

ラージファイルの操作


module LargeFile: sig .. end
ラージファイルの操作。

リファレンス



type 'a ref = {
   mutable contents : 'a;
}
'a の値を格納するリファレンス(変更可能な間接セル)の型。
val ref : 'a -> 'a ref
与えられた値を格納にた新しいリファレンスを返します。
val (!) : 'a ref -> 'a
!r はリファレンス r の現在の内容を返します。 fun r -> r.contents と等価です。
val (:=) : 'a ref -> 'a -> unit
r := a は リファレンスに a の値を格納します。 fun r v -> r.contents <- v と等価です。
val incr : int ref -> unit
与えられたリファレンスに格納された値をインクリメントします。 fun r -> r := succ !r と等価です。
val decr : int ref -> unit
与えられたリファレンスに格納された値をデクリメントします。 fun r -> r := pred !r と等価です。

書式指定文字列の操作



書式指定文字列は Scanf モジュールの書式付き入力関数群と、 Printf モジュールと Format モジュールで定義された書式付き出力関数群を使って データを読み書きするのに使われます。

書式指定文字列は ('a, 'b, 'c, 'd, 'e, 'f) format6 という一般的で非常に多相的な型をしています。 format6 型は組み込みの型です。 より単純化した format 型と format4 型は、 Objective Caml の以前のリリースとの互換性のために提供されています。 'a は書式のパラメータの型で、 'c は printf 形式の関数の結果の型、 'b%a%t に対応する表示関数の最初の引数の型です。
type ('a, 'b, 'c, 'd) format4 = ('a, 'b, 'c, 'c, 'c, 'd) format6 
type ('a, 'b, 'c) format = ('a, 'b, 'c, 'c) format4 
val string_of_format : ('a, 'b, 'c, 'd, 'e, 'f) format6 -> string
書式指定文字列を文字列に変換します。
val format_of_string : ('a, 'b, 'c, 'd, 'e, 'f) format6 -> ('a, 'b, 'c, 'd, 'e, 'f) format6
format_of_string s は文字列リテラル s を読み取って書式指定文字列を返します。
val (^^) : ('a, 'b, 'c, 'd, 'e, 'f) format6 ->
('f, 'b, 'c, 'e, 'g, 'h) format6 -> ('a, 'b, 'c, 'd, 'g, 'h) format6
f1 ^^ f2 は書式指定 f1f2 を連結します。 結果の書式指定は f1 からの引数を受け付け、その次に f2 からの引数を受け付けます。

プログラムの停止


val exit : int -> 'a
プロセスを停止し、与えられた状態コードを OS に返します。 一般には 0 はエラーのないことを表し、小さな正の整数は失敗を表します。 開いていた出力チャネルは flush_all を使ってすべてフラッシュされます。 プログラムが正常に終了するときには暗黙に exit 0 が実行されます。 それよりも前に、捕捉されない例外によりプログラムが停止した場合には、暗黙の exit 2 が実行されます。
val at_exit : (unit -> unit) -> unit
与えられた関数がプログラムの停止時に呼び出されるように登録します。 at_exit によって登録された関数は、 exit が呼び出されるか、プログラムが正常に終了するか、捕捉されない例外により終了するときに呼び出されます。 関数群は「後入れ先出し」(LIFO)順で実行されます。すなわち、いちばん最後に at_exit で登録された関数が最初に呼び出されます。

内部用、非一般ユーザー向け


val valid_float_lexem : string -> string
val unsafe_really_input : in_channel -> string -> int -> int -> unit
val do_at_exit : unit -> unit