Module Nameops.Name

include module type of struct include Names.Name end

Representation and operations on identifiers that are allowed to be anonymous (i.e. "_" in concrete syntax).

type t = Names.Name.t =
| Anonymous(*

anonymous identifier

*)
| Name of Names.Id.t(*

non-anonymous identifier

*)
val mk_name : Names.Id.t -> t

constructor

val is_anonymous : t -> bool

Return true iff a given name is Anonymous.

val is_name : t -> bool

Return true iff a given name is Name _.

val compare : t -> t -> int

Comparison over names.

val equal : t -> t -> bool

Equality over names.

val hash : t -> int

Hash over names.

val hcons : t -> t

Hashconsing over names.

val print : t -> Pp.t

Pretty-printer (print "_" for Anonymous.

exception IsAnonymous
val fold_left : ('a -> Names.Id.t -> 'a) -> 'a -> Names.Name.t -> 'a

fold_left f na a is f id a if na is Name id, and a otherwise.

val fold_right : (Names.Id.t -> 'a -> 'a) -> Names.Name.t -> 'a -> 'a

fold_right f a na is f a id if na is Name id, and a otherwise.

val iter : (Names.Id.t -> unit) -> Names.Name.t -> unit

iter f na does f id if na equals Name id, nothing otherwise.

val map : (Names.Id.t -> Names.Id.t) -> Names.Name.t -> t

map f na is Anonymous if na is Anonymous and Name (f id) if na is Name id.

val fold_left_map : ('a -> Names.Id.t -> 'a * Names.Id.t) -> 'a -> Names.Name.t -> 'a * Names.Name.t

fold_left_map f a na is a',Name id' when na is Name id and f a id is (a',id'). It is a,Anonymous otherwise.

val fold_right_map : (Names.Id.t -> 'a -> Names.Id.t * 'a) -> Names.Name.t -> 'a -> Names.Name.t * 'a

fold_right_map f na a is Name id',a' when na is Name id and f id a is (id',a'). It is Anonymous,a otherwise.

val get_id : Names.Name.t -> Names.Id.t

get_id associates id to Name id.

  • raises IsAnonymous

    otherwise.

pick na na' returns Anonymous if both names are Anonymous. Pick one of na or na' otherwise.

val cons : Names.Name.t -> Names.Id.t list -> Names.Id.t list

cons na l returns id::l if na is Name id and l otherwise.

val to_option : Names.Name.t -> Names.Id.t option

to_option Anonymous is None and to_option (Name id) is Some id