Spec-Zone.ru › OCaml
☰Библиотека OCaml
  • Основная библиотека
  • Стандартная библиотека
  • Фронтенд компилятора
  • Библиотека unix: системные вызовы Unix
  • Библиотека str: регулярные выражения и обработка строк
  • Библиотека runtime_events
  • Библиотека потоков
  • Библиотека dynlink: динамическая загрузка и компоновка объектных файлов
  • Недавно удалённые или перемещённые библиотеки (Graphics, Bigarray, Num, LablTk)

Глава 29 Основная библиотека

В этой главе описывается основная библиотека 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 = ()
Тип значения unit.
type exn
Тип значений-исключений.
type 'a array
Тип массивов, элементы которых имеют тип 'a.
type 'a iarray
Тип неизменяемых массивов, элементы которых имеют тип 'a.
type floatarray
Тип изменяемых массивов чисел с плавающей точкой с упакованным представлением.
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: модуль, открываемый при запуске
« Обнаружение гонок данных во время выполнения с помощью ThreadSanitizerСтандартная библиотека »
Copyright © 2026 Национальный институт исследований в области информатики и автоматики

© 1995-2026 INRIA.
https://ocaml.org/manual/5.5/core.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API