この章では Objective Caml のコアライブラリを解説します。コアライブラリは、組み込みの型や例外の宣言と、その型に対する基本的な処理を提供するモジュール Pervasives からなります。モジュール Pervasives は 2 つの意味で特別です。
-
このモジュールは ocamlc コマンドによってユーザのオブジェクトコードファイルに自動的にリンクされます (8 章) 。
-
このモジュールはコンパイル開始時やトップレベルシステム起動時に自動的に open されます。よって、モジュール Pervasives が提供する関数は open Pervasives 指示語を使わなくても、限定しない識別子で使用できます。
組み込みの型宣言とモジュール Pervasives の内容物はそれぞれタイプライタフォントで表示します。さらにその後に短い解説をつけています。すべてのライブラリモジュールとその内容物は、このレポートの最後で索引になっています。
19.1 |
Built-in types and predefined exceptions |
|
以下の組み込みの型と定義済み例外はコンパイル環境で常に定義されていますが、これらはいかなるモジュールの内容物でもありません。よって、これらはこれらの名前でしか参照できません。
type int
整数型。
type char
文字型。
type string
文字列型。
type float
浮動小数点小数型。
type bool = false | true
真偽値型。
type unit = ()
ユニット値の型。
type exn
例外値の型。
type 'a array
'a 型の要素を持つ配列の型。
type 'a list = [] | :: of 'a * 'a list
'a 型の要素を持つリストの型。
type 'a option = None | Some of 'a
'a 型の値を持つオプション型。
type ('a, 'b, 'c) format
フォーマット文字列の型。'a がフォーマットのパラメータの型、'c が printf 形式の関数の結果型、'b が \%a や\%t のプリント関数に最初に与える引数の型です (モジュール Printf[??] を見てください) 。
type 'a lazy_t
Lazy[??] モジュールの実装で使う型です。この型は直接使わないでください。
exception Match_failure of (string * int * int)
パターンマッチで該当するケースがなかった時発生する例外です。引数はソースコード中のパターンマッチの位置です (ファイル名、最初の文字の位置、最後の文字の位置) 。
exception Assert_failure of (string * int * int)
assertion に失敗したとき発生する例外です。引数はソースコード中のパターンマッチの位置です (ファイル名、最初の文字の位置、最後の文字の位置) 。
exception Invalid_argument of string
ライブラリ関数が、与えられた引数が意味をなさないことを知らせるために発生する例外です。
exception Failure of string
ライブラリ関数が、与えられた引数に対して未定義であることを知らせるために発生する例外です。
exception Not_found
検索関数が、要求されたオブジェクトを見つけられないときに発生する例外です。
exception Out_of_memory
実行を行うのに十分なメモリがなかったとき、ガベージコレクタが発生する例外です。
exception Stack_overflow
評価スタックが最大サイズに至ったときに、バイトコードインタプリタが発生する例外です。これはよくプログラムで無限再帰や極端に深い再帰を行ったときに発生します (ネイティブコードコンパイラでは、完全には実装されていません。セクション 11.4 を見てください) 。
exception Sys_error of string
入出力関数で OS エラーが起きたときに発生する例外です。
exception End_of_file
入力関数がファイル終端に至ったことを伝えるために発生する例外です。
exception Division_by_zero
除数に 0 をとって除算や剰余を行ったときに発生する例外です (ネイティブコードコンパイラでは、完全には実装されていません。セクション 11.4 を見てください) 。
exception Sys_blocked_io
Sys_error の特別な場合です。I/O が非同期 I/O チャンネルで使えなかったときに発生します。
Module Pervasives: the initially opened module JP