(* ========================================================================= *)
(* NAMES *)
(* Copyright (c) 2004 Joe Leslie-Hurd, distributed under the BSD License *)
(* ========================================================================= *)
signature Name =
sig
(* ------------------------------------------------------------------------- *)
(* A type of names. *)
(* ------------------------------------------------------------------------- *)
type name
(* ------------------------------------------------------------------------- *)
(* A total ordering. *)
(* ------------------------------------------------------------------------- *)
val compare : name * name -> order
val equal : name -> name -> bool
(* ------------------------------------------------------------------------- *)
(* Fresh names. *)
(* ------------------------------------------------------------------------- *)
val newName : unit -> name
val newNames : int -> name list
val variantPrime : {avoid : name -> bool} -> name -> name
val variantNum : {avoid : name -> bool} -> name -> name
(* ------------------------------------------------------------------------- *)
(* Parsing and pretty printing. *)
(* ------------------------------------------------------------------------- *)
val pp : name Print.pp
val toString : name -> string
val fromString : string -> name
end