Spec-Zone.ru › OCaml

Модуль Local_store

module Local_store: sig .. end

Этот модуль предоставляет средства для создания ссылок (и хеш-таблиц), которые можно легко сохранить и восстановить до произвольной версии.

Он используется на фронте (читай: типопроверке), для регистрации всего (ну, надеюсь) глобального состояния. Это облегчает инструментам, таким как Merlin, проверку типа разных файлов.

Создатели

val s_ref : 'a -> 'a ref

Аналогично Stdlib.ref, за исключением того, что выделенная ссылка регистрируется в хранилище.

val s_table : ('a -> 'b) -> 'a -> 'b ref

Используется для регистрации хеш-таблиц. Им также нужно поместить в ссылки для лёгкой замены, но нельзя просто «сохранить» начальное значение, чтобы создать новые экземпляры, поэтому требуется инициализатор.

Используйте так:

      let my_table = s_table Hashtbl.create 42
    

Управление состоянием

Примечание: все следующие функции в настоящее время не используются в кодовой базе компилятора. В настоящее время их единственный пользователь — Merlin.

type store 
val fresh : unit -> store

Возвращает новый экземпляр хранилища.

В первый раз при вызове этой функции сохраняется значение всех зарегистрированных ссылок, последующие вызовы fresh вернут экземпляры, инициализированные этими значениями.

val with_store : store -> (unit -> 'a) -> 'a

with_store s f сбрасывает все зарегистрированные ссылки на значение, которое у них есть в s для выполнения f. Если f обновит любую из зарегистрированных ссылок, s обновляется, чтобы запомнить эти изменения.

val reset : unit -> unit

Сбрасывает все ссылки до начального снимка (т. е. до тех же значений, с которыми начинаются новые экземпляры).

val is_bound : unit -> bool

Возвращает true когда хранилище активно (т. е. когда вызывается из обратного вызова, переданного в Local_store.with_store), false в противном случае.

© 1995-2024 INRIA.
https://ocaml.org/manual/5.2/api/compilerlibref/Local_store.html

Spec-Zone.ru

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