equal
deleted
inserted
replaced
1 (* Title: Pure/name.ML |
1 (* Title: Pure/name.ML |
2 ID: $Id$ |
2 ID: $Id$ |
3 Author: Makarius |
3 Author: Makarius |
4 |
4 |
5 Names of basic logical entities (variables etc.). |
5 Names of basic logical entities (variables etc.). Generic name bindings. |
6 *) |
6 *) |
7 |
7 |
8 signature NAME = |
8 signature NAME = |
9 sig |
9 sig |
10 val uu: string |
10 val uu: string |
26 val names: context -> string -> 'a list -> (string * 'a) list |
26 val names: context -> string -> 'a list -> (string * 'a) list |
27 val invent_list: string list -> string -> int -> string list |
27 val invent_list: string list -> string -> int -> string list |
28 val variants: string list -> context -> string list * context |
28 val variants: string list -> context -> string list * context |
29 val variant_list: string list -> string list -> string list |
29 val variant_list: string list -> string list -> string list |
30 val variant: string list -> string -> string |
30 val variant: string list -> string -> string |
|
31 type binding |
|
32 val binding_pos: string * Position.T -> binding |
|
33 val binding: string -> binding |
|
34 val no_binding: binding |
|
35 val name_of: binding -> string |
|
36 val pos_of: binding -> Position.T |
|
37 val map_name: (string -> string) -> binding -> binding |
31 end; |
38 end; |
32 |
39 |
33 structure Name: NAME = |
40 structure Name: NAME = |
34 struct |
41 struct |
35 |
42 |
137 in (x' ^ replicate_string n "_", ctxt') end); |
144 in (x' ^ replicate_string n "_", ctxt') end); |
138 |
145 |
139 fun variant_list used names = #1 (make_context used |> variants names); |
146 fun variant_list used names = #1 (make_context used |> variants names); |
140 fun variant used = singleton (variant_list used); |
147 fun variant used = singleton (variant_list used); |
141 |
148 |
|
149 |
|
150 |
|
151 (** generic name bindings **) |
|
152 |
|
153 datatype binding = Binding of string * Position.T; |
|
154 |
|
155 val binding_pos = Binding; |
|
156 fun binding name = binding_pos (name, Position.none); |
|
157 val no_binding = binding ""; |
|
158 |
|
159 fun name_of (Binding (name, _)) = name; |
|
160 fun pos_of (Binding (_, pos)) = pos; |
|
161 |
|
162 fun map_name f (Binding (name, pos)) = Binding (f name, pos); |
|
163 |
142 end; |
164 end; |