equal
deleted
inserted
replaced
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 |
31 |
32 include NAME_BINDING |
32 include BINDING |
33 val add_prefix: bool -> string -> binding -> binding |
33 type binding = Binding.T |
34 val map_prefix: ((string * bool) list -> binding -> binding) -> binding -> binding |
34 val name_of: Binding.T -> string (*FIMXE legacy*) |
35 val name_of: binding -> string (*FIMXE legacy*) |
35 val map_name: (string -> string) -> Binding.T -> Binding.T (*FIMXE legacy*) |
36 val map_name: (string -> string) -> binding -> binding (*FIMXE legacy*) |
36 val qualified: string -> Binding.T -> Binding.T (*FIMXE legacy*) |
37 val qualified: string -> binding -> binding (*FIMXE legacy*) |
|
38 val display: binding -> string |
|
39 end; |
37 end; |
40 |
38 |
41 structure Name: NAME = |
39 structure Name: NAME = |
42 struct |
40 struct |
43 |
|
44 open NameSpace; |
|
45 |
41 |
46 (** common defaults **) |
42 (** common defaults **) |
47 |
43 |
48 val uu = "uu"; |
44 val uu = "uu"; |
49 val aT = "'a"; |
45 val aT = "'a"; |
150 fun variant used = singleton (variant_list used); |
146 fun variant used = singleton (variant_list used); |
151 |
147 |
152 |
148 |
153 (** generic name bindings **) |
149 (** generic name bindings **) |
154 |
150 |
155 fun add_prefix sticky prfx b = if prfx = "" then error "empty name prefix" |
151 open Binding; |
156 else (map_binding o apfst) (cons (prfx, sticky)) b; |
152 |
|
153 type binding = Binding.T; |
157 |
154 |
158 val prefix_of = fst o dest_binding; |
155 val prefix_of = fst o dest_binding; |
159 val name_of = snd o dest_binding; |
156 val name_of = snd o dest_binding; |
160 val map_name = map_binding o apsnd; |
157 val map_name = map_binding o apsnd; |
161 val qualified = map_name o NameSpace.qualified; |
158 val qualified = map_name o NameSpace.qualified; |
162 |
159 |
163 fun map_prefix f b = |
|
164 let |
|
165 val (prefix, name) = dest_binding b; |
|
166 val pos = pos_of b; |
|
167 in f prefix (binding_pos (name, pos)) end; |
|
168 |
|
169 fun display b = |
|
170 let |
|
171 val (prefix, name) = dest_binding b |
|
172 fun mk_prefix (prfx, true) = prfx |
|
173 | mk_prefix (prfx, false) = enclose "(" ")" prfx |
|
174 in if not (! NameSpace.long_names) orelse null prefix orelse name = "" then name |
|
175 else NameSpace.implode (map mk_prefix prefix) ^ ":" ^ name |
|
176 end; |
|
177 |
|
178 end; |
160 end; |