Глава 25 Ядровая библиотека
- 25.1 Встроенные типы и предопределённые исключения
- 25.2 Модуль Stdlib: модуль, открытый по умолчанию
В этой главе описывается ядровая библиотека OCaml, которая состоит из объявлений встроенных типов и исключений, а также модуля Stdlib, предоставляющего базовые операции над этими встроенными типами. Модуль Stdlib выделяется двумя особенностями:
- Он автоматически подключается к объектным файлам пользователя командой ocamlc (глава 11).
- Он автоматически «открывается» при запуске компиляции или запуска системного интерпретатора. Таким образом, можно использовать неуточнённые идентификаторы для ссылки на функции модуля Stdlib без добавления директивы open Stdlib.
25.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)
Исключение, генерируемое при оценке определения модуля с ошибочной рекурсией. (См. раздел 10.2.) В качестве аргументов передаются расположение определения в исходном коде (имя файла, номер строки, номер столбца).
25.2 Модуль Stdlib: модуль, открытый по умолчанию
- Модуль Stdlib: модуль, открытый по умолчанию
- Модуль Pervasives: устаревший псевдоним для Stdlib
© 1995-2022 INRIA.
https://v2.ocaml.org/releases/4.14/htmlman/core.html