package ocaml-base-compiler
Install
dune-project
Dependency
Authors
Maintainers
Sources
sha256=d3eaf17fcd8722827ae15c560a419ee52cf7e066f1d6cb80df621bfd3a17d61c
doc/ocamlcommon/Signature_group/index.html
Module Signature_group
Iterate on signature by syntactic group of items
Classes, class types and private row types adds ghost components to the signature where they are defined.
When editing or printing a signature it is therefore important to identify those ghost components.
This module provides type grouping together ghost components with the corresponding core item (or recursive group) and the corresponding iterators.
type sig_item = {src : Types.signature_item;(*the syntactic item
*)post_ghosts : Types.signature_item list;(*ghost classes types are post-declared
*)
}Classes and class types generate ghosts signature items, we group them together before printing
val flatten : sig_item -> Types.signatureflatten sig_item is x.src :: x.post_ghosts
A group of mutually recursive definition
val rec_items : core_rec_group -> sig_item listrec_items group is the list of sig_items in the group
Private #row types are manifested as a sequence of definitions preceding a recursive group, we collect them and separate them from the syntatic recursive group.
val next : Types.signature -> (rec_group * Types.signature) optionval seq : Types.signature -> rec_group Seq.tval iter : (rec_group -> unit) -> Types.signature -> unitval fold : ('acc -> rec_group -> 'acc) -> 'acc -> Types.signature -> 'acctype in_place_patch = {ghosts : Types.signature;(*updated list of ghost items
*)replace_by : Types.signature_item option;(*replacement for the selected item
*)
}Describe how to amend one element of a signature
val replace_in_place :
(rec_group:sig_item list ->
ghosts:Types.signature ->
Types.signature_item ->
('a * in_place_patch) option) ->
Types.signature ->
('a * Types.signature) option!replace_in_place patch sg replaces the first element of the signature for which patch ~rec_group ~ghosts component returns Some (value,patch). The rec_group argument is the remaining part of the mutually recursive group of component. The ghosts list is the current prefix of ghost components associated to component