Глава 28 Основная библиотека
В этой главе описывается основная библиотека OCaml, которая состоит из объявлений встроенных типов и исключений, плюс модуль Stdlib, предоставляющий базовые операции над этими встроенными типами. Модуль Stdlib является особым в двух отношениях:
- Он автоматически подключается к объектным кодам пользователя командой ocamlc (глава 13).
- Он автоматически «открывается» при запуске компиляции или топлевельной системы. Поэтому можно использовать неуточнённые идентификаторы для обращения к функциям модуля Stdlib без добавления директивы open Stdlib.
1 Встроенные типы и предопределённые исключения
Следующие встроенные типы и предопределённые исключения всегда определены в среде компиляции, но не являются частью какого-либо модуля. Вследствие этого к ним можно обратиться только по их коротким именам.
Встроенные типы
type int
Тип целых чисел.
type char
Тип символов.
type bytes
Тип последовательностей байтов (для записи).
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 int32
Тип 32-битных целых чисел со знаком. Литералы для 32-битных целых чисел имеют суффикс l. См. модуль Int32.
type int64
Тип 64-битных целых чисел со знаком. Литералы для 64-битных целых чисел имеют суффикс L. См. модуль Int64.
type nativeint
Тип целых чисел со знаком, родной для платформы (32 бита на 32-битных процессорах, 64 бита на 64-битных процессорах). Литералы для родных целых чисел имеют суффикс n. См. модуль Nativeint.
type ('a, 'b, 'c, 'd, 'e, 'f) format6
Тип строк форматирования. 'a — тип параметров форматирования, 'f — тип результата для функций в стиле printf, 'b — тип первого аргумента для функций печати %a и %t (см. модуль Printf), 'c — тип результата этих функций и также тип аргумента, передаваемого первому аргументу функций в стиле kprintf, 'd — тип результата для функций в стиле scanf (см. модуль Scanf), а 'e — тип функции-получателя для функций в стиле scanf.
type 'a lazy_t
Этот тип используется для реализации модуля Lazy. Его не следует использовать напрямую.
Предопределённые исключения
exception Match_failure of (string * int * int)
Исключение, возникающее, когда ни один из вариантов сопоставления с образцом не применим. В аргументах указано местоположение ключевого слова match в исходном коде (имя файла, номер строки, номер столбца).
exception Assert_failure of (string * int * int)
Исключение, возникающее при неудаче проверки. В аргументах указано местоположение ключевого слова assert в исходном коде (имя файла, номер строки, номер столбца).
exception Invalid_argument of string
Исключение, выбрасываемое функциями библиотеки для обозначения того, что предоставленные аргументы некорректны. Строка содержит некоторую информацию для программиста. Как правило, это исключение не следует перехватывать; оно указывает на ошибку в коде, и следует изменить код, чтобы избежать его возникновения.
exception Failure of string
Исключение, выбрасываемое функциями библиотеки для указания того, что они не определены для данных аргументов. Строка предназначена для предоставления информации программисту; вы не должны использовать сопоставление с образцом на строковый литерал, так как он может измениться в будущих версиях (используйте Failure _ вместо него).
exception Not_found
Исключение, выбрасываемое функциями поиска, когда искомый объект не найден.
exception Out_of_memory
Исключение, выбрасываемое сборщиком мусора, когда памяти недостаточно для завершения вычисления. (Не надёжно для выделений на вспомогательной куче.)
exception Stack_overflow
Исключение, выбрасываемое интерпретатором байткода, когда стек вычислений достигает максимального размера. Это часто указывает на бесконечную или чрезмерно глубокую рекурсию в программе пользователя. До версии 4.10 оно не полностью реализовывалось компилятором нативный код.
exception Sys_error of string
Исключение, выбрасываемое функциями ввода/вывода для сообщения об ошибке операционной системы. Строка предназначена для предоставления информации программисту; вы не должны использовать сопоставление с образцом на строковый литерал, так как он может измениться в будущих версиях (используйте Sys_error _ вместо него).
exception End_of_file
Исключение, выбрасываемое функциями ввода, чтобы указать на достижение конца файла.
exception Division_by_zero
Исключение, выбрасываемое операциями целочисленного деления и остатка, когда второй аргумент равен нулю.
exception Sys_blocked_io
Специальный случай Sys_error, выбрасываемый, когда ввод/вывод невозможен для канала ввода/вывода без блокировки.
exception Undefined_recursive_module of (string * int * int)
Исключение, выбрасываемое при оценке определения модуля с порочным рекурсивным определением. (См. раздел 12.2). В аргументах указано местоположение определения в исходном коде (имя файла, номер строки, номер столбца).
2 Модуль Stdlib: модуль, открываемый по умолчанию
- Модуль Stdlib: модуль, открываемый по умолчанию
Авторское право © 2024 Institut National de Recherche en Informatique et en Automatique
© 1995-2024 INRIA.
https://ocaml.org/manual/5.2/core.html