package coq-core
Install
Dune Dependency
Authors
Maintainers
Sources
md5=8d852367b54f095d9fbabd000304d450
sha512=46922d5f2eb6802a148a52fd3e7f0be8370c93e7bc33cee05cf4a2044290845b10ccddbaa306f29c808e7c5019700763e37e45ff6deb507b874a4348010fed50
doc/coq-core.vernac/Declaremods/index.html
Module Declaremods
Source
Modules
Rigid / flexible module signature
Which module inline annotations should we honor, either None or the ones whose level is less or equal to the given integer
Kinds of modules
type module_expr =
Modintern.module_struct_expr
* Names.ModPath.t
* Modintern.module_kind
* Entries.inline
Libraries i.e. modules on disk
declare_module id fargs typ exprs
declares module id
, from functor arguments fargs
, with final type typ
. exprs
is usually of length 1 (Module definition with a concrete body), but it could also be empty ("Declare Module", with non-empty typ
), or multiple (body of the shape M <+ N <+ ...).
val end_library :
output_native_objects:bool ->
library_name ->
Safe_typing.compiled_library
* library_objects
* library_objects
* Nativelib.native_library
append a function to be executed at end_library
...
iter_all_interp_segments
iterate over all segments, the modules' segments first and then the current segment. Modules are presented in an arbitrary order. The given function is applied to all leaves (together with their section path). Ignores synterp objects.
For printing modules, process_module_binding
adds names of bound module (and its components) to Nametab. It also loads objects associated to it. It may raise a Failure
when the bound module hasn't an atomic type.
val process_module_binding :
Names.MBId.t ->
(Constr.t * Univ.AbstractContext.t option) Declarations.module_alg_expr ->
unit
Compatibility layer
val import_module :
Libobject.open_filter ->
export:Lib.export_flag ->
Names.ModPath.t ->
unit
val declare_module :
Names.Id.t ->
module_params ->
(Constrexpr.module_ast * inline) module_signature ->
(Constrexpr.module_ast * inline) list ->
Names.ModPath.t
val start_module :
Lib.export ->
Names.Id.t ->
module_params ->
(Constrexpr.module_ast * inline) module_signature ->
Names.ModPath.t
val declare_modtype :
Names.Id.t ->
module_params ->
(Constrexpr.module_ast * inline) list ->
(Constrexpr.module_ast * inline) list ->
Names.ModPath.t
val start_modtype :
Names.Id.t ->
module_params ->
(Constrexpr.module_ast * inline) list ->
Names.ModPath.t