Nameops
Identifiers and names
val make_ident : string -> int option -> Names.Id.t
val repr_ident : Names.Id.t -> string * int option
val atompart_of_id : Names.Id.t -> string
remove trailing digits
val root_of_id : Names.Id.t -> Names.Id.t
remove trailing digits, ' and _
val add_suffix : Names.Id.t -> string -> Names.Id.t
val add_prefix : string -> Names.Id.t -> Names.Id.t
Below, by subscript we mean a suffix composed solely from (decimal) digits.
module Subscript : sig ... end
module Fresh : sig ... end
val has_subscript : Names.Id.t -> bool
val get_subscript : Names.Id.t -> Names.Id.t * Subscript.t
Split an identifier into a base name and a subscript.
val add_subscript : Names.Id.t -> Subscript.t -> Names.Id.t
Append the subscript to the identifier.
val increment_subscript : Names.Id.t -> Names.Id.t
Return the same identifier as the original one but whose subscript is incremented. If the original identifier does not have a suffix, 0
is appended to it.
Example mappings:
bar
↦ bar0
bar0
↦ bar1
bar00
↦ bar01
bar1
↦ bar2
bar01
↦ bar01
bar9
↦ bar10
bar09
↦ bar10
bar99
↦ bar100
val forget_subscript : Names.Id.t -> Names.Id.t
module Name : sig ... end
val pr_meta : Constr.metavariable -> Pp.t
Metavariables
val string_of_meta : Constr.metavariable -> string